From d9ca01a482ea07a20be5097b593949001fb8451f Mon Sep 17 00:00:00 2001 From: jkrauss <+jkrauss@users.noreply.github.com> Date: Tue, 10 Mar 2026 16:53:01 +0000 Subject: [PATCH] [bot]: Update Outputs --- .gitattributes | 7 + .gitconfig | 20 + Test_6-netlist.net | 165 + Test_6.kicad_pro | 37 +- Test_6.xml | 241 + kibot_run_preprocess.log | 5398 ++++++++++++++++++ kibot_run_xml.log | 533 ++ mfg/assembly/Test_6-assembly_notes.txt | 11 + mfg/assembly/Test_6-bom.csv | 1 + mfg/assembly/Test_6-bom.html | 242 + mfg/assembly/Test_6-components_count.csv | 4 + mfg/fab/Test_6-fabrication_notes.txt | 50 + mfg/fab/Test_6-impedance_table.csv | 4 + schematic/Test_6-schematic.pdf | Bin 0 -> 844454 bytes schematic/Test_6-schematic_notes.txt | 1 + test/testpoints/Test_6-testpoints-bottom.csv | 1 + test/testpoints/Test_6-testpoints-top.csv | 1 + test/testpoints/Test_6-testpoints.csv | 1 + 18 files changed, 6700 insertions(+), 17 deletions(-) create mode 100644 .gitattributes create mode 100644 .gitconfig create mode 100644 Test_6-netlist.net create mode 100644 Test_6.xml create mode 100644 kibot_run_preprocess.log create mode 100644 kibot_run_xml.log create mode 100644 mfg/assembly/Test_6-assembly_notes.txt create mode 100644 mfg/assembly/Test_6-bom.csv create mode 100644 mfg/assembly/Test_6-bom.html create mode 100644 mfg/assembly/Test_6-components_count.csv create mode 100644 mfg/fab/Test_6-fabrication_notes.txt create mode 100644 mfg/fab/Test_6-impedance_table.csv create mode 100644 schematic/Test_6-schematic.pdf create mode 100644 schematic/Test_6-schematic_notes.txt create mode 100644 test/testpoints/Test_6-testpoints-bottom.csv create mode 100644 test/testpoints/Test_6-testpoints-top.csv create mode 100644 test/testpoints/Test_6-testpoints.csv diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..5282280 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,7 @@ +*.csv filter=bom_csv +*.html filter=bom_html +*.gbr filter=gerber +*.gbrjob filter=gbrjob +*.xml filter=xml +*.kicad_pcb filter=kicad_pcb_f +*.net filter=net_filter diff --git a/.gitconfig b/.gitconfig new file mode 100644 index 0000000..1238a5e --- /dev/null +++ b/.gitconfig @@ -0,0 +1,20 @@ +[filter "bom_csv"] + clean = sed -E 's/^BoM Date:.*$/BoM Date:Date/' + smudge = sed -E \"s/BoM Date:Date/BoM Date:,`date +\\\"%a %d %b %Y %X %:::z\\\"`/\" +[filter "bom_html"] + clean = sed -E 's/^BoM Date<\\/td>.*$/BoM Date<\\/td>Date<\\/td><\\/tr>/' + smudge = sed -E \"s/BoM Date<\\/td>Date<\\/td><\\/tr>/BoM Date<\\/td>`date +\\\"%a %d %b %Y %X %:::z\\\"`<\\/td><\\/tr>/\" +[filter "gerber"] + clean = sed -E -e 's/^%TF.CreationDate,.*$/%TF.CreationDate,Date%/' -e 's/^G04 Created by KiCad.*$/G04 Created by KiCad*/' + smudge = sed -E \"s/%TF.CreationDate,Date%/%TF.CreationDate,`date +%Y-%m-%dT%H:%M:%S%:z`/\" +[filter "gbrjob"] + clean = sed -E 's/\"CreationDate\":.*/\"CreationDate\": \"Date\"/' + smudge = sed -E \"s/\\\"CreationDate\\\": \\\"Date\\\"/\\\"CreationDate\\\": \\\"`date +%Y-%m-%dT%H:%M:%S%:z`\\\"/\" +[filter "xml"] + clean = sed -E -e 's/^ .*<\\/date>/ Date2<\\/date>/' -e 's/^ .*<\\/date>/ Date1<\\/date>/' + smudge = sed -E -e \"s/Date1<\\/date>/`date +\\\"%a %d %b %Y %X %:::z\\\"`<\\/date>/\" -e \"s/Date2<\\/date>/`date +\\\"%Y-%m-%d\\\"`<\\/date>/\" +[filter "kicad_pcb_f"] + clean = sed -E 's/\\(host pcbnew ([[:digit:]]+\\.[[:digit:]]+\\.[[:digit:]]+).*/\\(host pcbnew \\1\\)/' +[filter "net_filter"] + clean = sed -E -e 's/\\(date \\\".*\\\"\\)/\\(date \\\"Date\\\"\\)/' + smudge = sed -E -e \"s/\\(date \\\"Date\\\"\\)/\\(date \\\"`date +\\\"%a %d %b %Y %X %:::z\\\"`\\\"\\)/\" diff --git a/Test_6-netlist.net b/Test_6-netlist.net new file mode 100644 index 0000000..12d0f99 --- /dev/null +++ b/Test_6-netlist.net @@ -0,0 +1,165 @@ +(export (version "E") + (design + (source "/workspace/jkrauss/Test_6/Test_6.kicad_sch") + (date "Date") + (tool "Eeschema 9.0.7+1") + (textvar (name "ASSEMBLY_NAME") "Assembly Name") + (textvar (name "ASSEMBLY_NOTES") "ASSEMBLY NOTES (UNLESS OTHERWISE SPECIFIED)\n\n1) DO NOT POPULATE COMPONENTS ARE MARKED WITH A RED CROSS\n\n2) DO NOT POPULATE COMPONENTS ARE NOT PRESENT IN THE BOM\n\n3) IF CONFLICTING INFORMATION IS FOUND BETWEEN THE ASSEMBLY\n FILE AND BOM, BOM SHOULD BE USED AS THE MAIN SOURCE.\n\n4) DOT IDENTIFIES PIN #1 LOCATION AND DEVICE ORIENTATION\n WHEN VIEWED FROM THE TOP.") + (textvar (name "ASSEMBLY_NUMBER") "A99-9000") + (textvar (name "ASSEMBLY_SCALE") "1") + (textvar (name "COMPANY") "Asymworks, LLC") + (textvar (name "DESIGNER") "JPK") + (textvar (name "DWG_NUMBER_PCB") "P99-9000") + (textvar (name "DWG_NUMBER_SCH") "S99-9000") + (textvar (name "DWG_TITLE_ASSY") "PCB Assembly, Assembly Name") + (textvar (name "DWG_TITLE_PCB") "PCB, Assembly Name") + (textvar (name "DWG_TITLE_SCH") "Schematic, Assembly Name") + (textvar (name "FABRICATION_NOTES") "FABRICATION NOTES (UNLESS OTHERWISE SPECIFIED)\n\n1) FABRICATE PER IPC-6012A CLASS 2.\n\n2) OUTLINE DEFINED IN SEPARATE GERBER FILE WITH\n \"Edge_Cuts.GBR\" SUFFIX.\n\n3) SEE SEPARATE DRILL FILES WITH \".DRL\" SUFFIX \n FOR HOLE LOCATIONS.\n\n SELECTED HOLE LOCATIONS SHOWN ON THIS DRAWING \n FOR REFERENCE ONLY.\n\n4) SURFACE FINISH: ENIG\n\n5) SOLDERMASK ON BOTH SIDES OF THE BOARD SHALL \n BE LPI, COLOR GREEN.\n\n6) SILK SCREEN LEGEND TO BE APPLIED PER LAYER \n STACKUP USING WHITE NON-CONDUCTIVE EPOXY INK.\n\n7) ALL VIAS ARE TENTED ON BOTH SIDES UNLESS \n SOLDERMASK OPENED IN GERBER.\n\n8) RESERVED\n\n9) PCB MATERIAL REQUIREMENTS:\n\n A. FLAMMABILITY RATING MUST MEET OR EXCEED \n UL94V-0 REQUIREMENTS.\n B. Tg 135 C OR EQUIVALENT.\n\n10) DESIGN GEOMETRY MINIMUM FEATURE SIZES:\n\n BOARD SIZE N/A × N/A mm\n BOARD THICKNESS 1.647 mm\n TRACE WIDTH N/A mm\n TRACE TO TRACE 0.200 mm\n MIN. HOLE (PTH) N/A mm\n MIN. HOLE (NPTH) N/A mm\n ANNULAR RING N/A mm\n COPPER TO HOLE 0.250 mm\n COPPER TO EDGE 0.500 mm\n HOLE TO HOLE 0.250 mm\n\n11) ALL DIMENSIONS ARE IN MILLIMETERS UNLESS OTHERWISE\n SPECIFIED.\n\n12) FOR REFERENCE ONLY THE STACKUP CORRESPONDS TO JLCPCB\n STACKUP JLC04161H-7628.") + (textvar (name "GIT_HASH") "6f934d1") + (textvar (name "GIT_HASH_PCB") "6f934d1") + (textvar (name "GIT_HASH_SCH") "6f934d1") + (textvar (name "GIT_URL") "/jkrauss/Test_4") + (textvar (name "PROJECT_CODE") "P99") + (textvar (name "RELEASE_DATE") "2026-03-10") + (textvar (name "RELEASE_STATE") "DRAFT") + (textvar (name "REVISION") "NO_TAG+ (Unreleased)") + (textvar (name "SCALE") "1:1") + (textvar (name "SCHEMATIC_NOTES") "Unless otherwise specified, components Values are in ohms, µF, and µH.") + (textvar (name "SHEET_NAME_01") "Cover Page") + (textvar (name "SHEET_NAME_02") "Block Diagram") + (textvar (name "SHEET_NAME_03") "Project Architecture") + (textvar (name "SHEET_NAME_04") "Circuit 1") + (textvar (name "SHEET_NAME_05") "Circuit 2") + (textvar (name "SHEET_NAME_06") "Circuit 3") + (textvar (name "SHEET_NAME_07") "Parts List") + (textvar (name "SHEET_NAME_08") "......................................") + (textvar (name "SHEET_NAME_09") "......................................") + (textvar (name "SHEET_NAME_10") "......................................") + (textvar (name "SHEET_NAME_11") "......................................") + (textvar (name "SHEET_NAME_12") "......................................") + (textvar (name "SHEET_NAME_13") "......................................") + (textvar (name "SHEET_NAME_14") "......................................") + (textvar (name "SHEET_NAME_15") "......................................") + (textvar (name "SHEET_NAME_16") "......................................") + (textvar (name "SHEET_NAME_17") "......................................") + (textvar (name "SHEET_NAME_18") "......................................") + (textvar (name "SHEET_NAME_19") "......................................") + (textvar (name "SHEET_NAME_20") "......................................") + (textvar (name "STATE") "TEMPLATE") + (textvar (name "VARIANT")) + (sheet (number "1") (name "/") (tstamps "/") + (title_block + (title "Title Page") + (company "Asymworks, LLC") + (rev "NO_TAG+ (Unreleased)") + (date) + (source "Test_6.kicad_sch") + (comment (number "1") (value "")) + (comment (number "2") (value "")) + (comment (number "3") (value "")) + (comment (number "4") (value "")) + (comment (number "5") (value "")) + (comment (number "6") (value "")) + (comment (number "7") (value "")) + (comment (number "8") (value "")) + (comment (number "9") (value "")))) + (sheet (number "2") (name "/Block Diagram/") (tstamps "/28ad8293-baaf-4ee1-8056-ad34096542a0/") + (title_block + (title "Block Diagram") + (company "Asymworks, LLC") + (rev "NO_TAG+ (Unreleased)") + (date) + (source "Block_Diagram.kicad_sch") + (comment (number "1") (value "")) + (comment (number "2") (value "")) + (comment (number "3") (value "")) + (comment (number "4") (value "")) + (comment (number "5") (value "")) + (comment (number "6") (value "")) + (comment (number "7") (value "")) + (comment (number "8") (value "")) + (comment (number "9") (value "")))) + (sheet (number "3") (name "/Project Architecture/") (tstamps "/f6afef58-d841-4ad6-baf9-746b0a35f011/") + (title_block + (title "Project Architecture") + (company "Asymworks, LLC") + (rev "NO_TAG+ (Unreleased)") + (date) + (source "Architecture.kicad_sch") + (comment (number "1") (value "")) + (comment (number "2") (value "")) + (comment (number "3") (value "")) + (comment (number "4") (value "")) + (comment (number "5") (value "")) + (comment (number "6") (value "")) + (comment (number "7") (value "")) + (comment (number "8") (value "")) + (comment (number "9") (value "")))) + (sheet (number "4") (name "/Project Architecture/Circuit 1/") (tstamps "/f6afef58-d841-4ad6-baf9-746b0a35f011/a5aa3c11-5084-4ea5-9da5-c9ff4a86f01f/") + (title_block + (title "Circuit 1") + (company "Asymworks, LLC") + (rev "NO_TAG+ (Unreleased)") + (date) + (source "Circuit-1.kicad_sch") + (comment (number "1") (value "")) + (comment (number "2") (value "")) + (comment (number "3") (value "")) + (comment (number "4") (value "")) + (comment (number "5") (value "")) + (comment (number "6") (value "")) + (comment (number "7") (value "")) + (comment (number "8") (value "")) + (comment (number "9") (value "")))) + (sheet (number "5") (name "/Project Architecture/Circuit 2/") (tstamps "/f6afef58-d841-4ad6-baf9-746b0a35f011/9da43fd7-7a0a-403c-bf2c-ba67cd8fa669/") + (title_block + (title "Circuit 2") + (company "Asymworks, LLC") + (rev "NO_TAG+ (Unreleased)") + (date) + (source "Circuit-2.kicad_sch") + (comment (number "1") (value "")) + (comment (number "2") (value "")) + (comment (number "3") (value "")) + (comment (number "4") (value "")) + (comment (number "5") (value "")) + (comment (number "6") (value "")) + (comment (number "7") (value "")) + (comment (number "8") (value "")) + (comment (number "9") (value "")))) + (sheet (number "6") (name "/Project Architecture/Circuit 3/") (tstamps "/f6afef58-d841-4ad6-baf9-746b0a35f011/6c8ce547-8e28-496a-9003-0e7dbfd93e8c/") + (title_block + (title) + (company "Asymworks, LLC") + (rev "NO_TAG+ (Unreleased)") + (date) + (source "Circuit-3.kicad_sch") + (comment (number "1") (value "")) + (comment (number "2") (value "")) + (comment (number "3") (value "")) + (comment (number "4") (value "")) + (comment (number "5") (value "")) + (comment (number "6") (value "")) + (comment (number "7") (value "")) + (comment (number "8") (value "")) + (comment (number "9") (value "")))) + (sheet (number "7") (name "/Parts List/") (tstamps "/20edd200-9383-4d87-bd58-f882adb4f112/") + (title_block + (title "Parts List") + (company "Asymworks, LLC") + (rev "NO_TAG+ (Unreleased)") + (date) + (source "Parts_List.kicad_sch") + (comment (number "1") (value "")) + (comment (number "2") (value "")) + (comment (number "3") (value "")) + (comment (number "4") (value "")) + (comment (number "5") (value "")) + (comment (number "6") (value "")) + (comment (number "7") (value "")) + (comment (number "8") (value "")) + (comment (number "9") (value ""))))) + (components) + (libparts) + (libraries) + (nets)) \ No newline at end of file diff --git a/Test_6.kicad_pro b/Test_6.kicad_pro index 8204795..ff9d63d 100644 --- a/Test_6.kicad_pro +++ b/Test_6.kicad_pro @@ -653,25 +653,28 @@ ] ], "text_variables": { - "ASSEMBLY_NAME": "", - "ASSEMBLY_NUMBER": "", - "ASSEMBLY_SCALE": "", + "ASSEMBLY_NAME": "Assembly Name", + "ASSEMBLY_NOTES": "ASSEMBLY NOTES (UNLESS OTHERWISE SPECIFIED)\n\n1)\tDO NOT POPULATE COMPONENTS ARE MARKED WITH A RED CROSS\n\n2)\tDO NOT POPULATE COMPONENTS ARE NOT PRESENT IN THE BOM\n\n3)\tIF CONFLICTING INFORMATION IS FOUND BETWEEN THE ASSEMBLY\n\tFILE AND BOM, BOM SHOULD BE USED AS THE MAIN SOURCE.\n\n4)\tDOT IDENTIFIES PIN #1 LOCATION AND DEVICE ORIENTATION\n\tWHEN VIEWED FROM THE TOP.", + "ASSEMBLY_NUMBER": "A99-9000", + "ASSEMBLY_SCALE": "1", "COMPANY": "Asymworks, LLC", "DESIGNER": "JPK", - "DWG_NUMBER_PCB": "", - "DWG_NUMBER_SCH": "", - "DWG_TITLE_ASSY": "", - "DWG_TITLE_PCB": "", - "DWG_TITLE_SCH": "", - "GIT_HASH": "", - "GIT_HASH_PCB": "", - "GIT_HASH_SCH": "", - "GIT_URL": "", - "PROJECT_CODE": "", - "RELEASE_DATE": "", - "RELEASE_STATE": "", - "REVISION": "${REVISION}", + "DWG_NUMBER_PCB": "P99-9000", + "DWG_NUMBER_SCH": "S99-9000", + "DWG_TITLE_ASSY": "PCB Assembly, Assembly Name", + "DWG_TITLE_PCB": "PCB, Assembly Name", + "DWG_TITLE_SCH": "Schematic, Assembly Name", + "FABRICATION_NOTES": "FABRICATION NOTES (UNLESS OTHERWISE SPECIFIED)\n\n1)\tFABRICATE PER IPC-6012A CLASS 2.\n\n2)\tOUTLINE DEFINED IN SEPARATE GERBER FILE WITH\n\t\"Edge_Cuts.GBR\" SUFFIX.\n\n3)\tSEE SEPARATE DRILL FILES WITH \".DRL\" SUFFIX \n\tFOR HOLE LOCATIONS.\n\n\tSELECTED HOLE LOCATIONS SHOWN ON THIS DRAWING \n\tFOR REFERENCE ONLY.\n\n4)\tSURFACE FINISH: ENIG\n\n5)\tSOLDERMASK ON BOTH SIDES OF THE BOARD SHALL \n\tBE LPI, COLOR GREEN.\n\n6)\tSILK SCREEN LEGEND TO BE APPLIED PER LAYER \n\tSTACKUP USING WHITE NON-CONDUCTIVE EPOXY INK.\n\n7)\tALL VIAS ARE TENTED ON BOTH SIDES UNLESS \n\tSOLDERMASK OPENED IN GERBER.\n\n8)\tRESERVED\n\n9)\tPCB MATERIAL REQUIREMENTS:\n\n\tA.\tFLAMMABILITY RATING MUST MEET OR EXCEED \n\t\tUL94V-0 REQUIREMENTS.\n\tB.\tTg 135 C OR EQUIVALENT.\n\n10)\tDESIGN GEOMETRY MINIMUM FEATURE SIZES:\n\n\tBOARD SIZE\t\t\t\tN/A \u00d7 N/A mm\n\tBOARD THICKNESS\t\t1.647 mm\n\tTRACE WIDTH\t\t\tN/A mm\n\tTRACE TO TRACE\t\t0.200 mm\n\tMIN. HOLE (PTH)\t\t\tN/A mm\n\tMIN. HOLE (NPTH)\t\tN/A mm\n\tANNULAR RING\t\t\tN/A mm\n\tCOPPER TO HOLE\t\t0.250 mm\n\tCOPPER TO EDGE\t\t0.500 mm\n\tHOLE TO HOLE\t\t\t0.250 mm\n\n11)\tALL DIMENSIONS ARE IN MILLIMETERS UNLESS OTHERWISE\n\tSPECIFIED.\n\n12)\tFOR REFERENCE ONLY THE STACKUP CORRESPONDS TO JLCPCB\n\tSTACKUP JLC04161H-7628.", + "GIT_HASH": "6f934d1", + "GIT_HASH_PCB": "6f934d1", + "GIT_HASH_SCH": "6f934d1", + "GIT_URL": "/jkrauss/Test_4", + "PROJECT_CODE": "P99", + "RELEASE_DATE": "2026-03-10", + "RELEASE_STATE": "DRAFT", + "REVISION": "NO_TAG+ (Unreleased)", "SCALE": "1:1", + "SCHEMATIC_NOTES": "Unless otherwise specified, components Values are in ohms, \u00b5F, and \u00b5H.", "SHEET_NAME_01": "Cover Page", "SHEET_NAME_02": "Block Diagram", "SHEET_NAME_03": "Project Architecture", @@ -695,4 +698,4 @@ "STATE": "TEMPLATE", "VARIANT": "" } -} +} \ No newline at end of file diff --git a/Test_6.xml b/Test_6.xml new file mode 100644 index 0000000..8549069 --- /dev/null +++ b/Test_6.xml @@ -0,0 +1,241 @@ + + + + /workspace/jkrauss/Test_6/Test_6.kicad_sch + Date1 + Eeschema 9.0.7+1 + Assembly Name + ASSEMBLY NOTES (UNLESS OTHERWISE SPECIFIED) + +1) DO NOT POPULATE COMPONENTS ARE MARKED WITH A RED CROSS + +2) DO NOT POPULATE COMPONENTS ARE NOT PRESENT IN THE BOM + +3) IF CONFLICTING INFORMATION IS FOUND BETWEEN THE ASSEMBLY + FILE AND BOM, BOM SHOULD BE USED AS THE MAIN SOURCE. + +4) DOT IDENTIFIES PIN #1 LOCATION AND DEVICE ORIENTATION + WHEN VIEWED FROM THE TOP. + A99-9000 + 1 + Asymworks, LLC + JPK + P99-9000 + S99-9000 + PCB Assembly, Assembly Name + PCB, Assembly Name + Schematic, Assembly Name + FABRICATION NOTES (UNLESS OTHERWISE SPECIFIED) + +1) FABRICATE PER IPC-6012A CLASS 2. + +2) OUTLINE DEFINED IN SEPARATE GERBER FILE WITH + "Edge_Cuts.GBR" SUFFIX. + +3) SEE SEPARATE DRILL FILES WITH ".DRL" SUFFIX + FOR HOLE LOCATIONS. + + SELECTED HOLE LOCATIONS SHOWN ON THIS DRAWING + FOR REFERENCE ONLY. + +4) SURFACE FINISH: ENIG + +5) SOLDERMASK ON BOTH SIDES OF THE BOARD SHALL + BE LPI, COLOR GREEN. + +6) SILK SCREEN LEGEND TO BE APPLIED PER LAYER + STACKUP USING WHITE NON-CONDUCTIVE EPOXY INK. + +7) ALL VIAS ARE TENTED ON BOTH SIDES UNLESS + SOLDERMASK OPENED IN GERBER. + +8) RESERVED + +9) PCB MATERIAL REQUIREMENTS: + + A. FLAMMABILITY RATING MUST MEET OR EXCEED + UL94V-0 REQUIREMENTS. + B. Tg 135 C OR EQUIVALENT. + +10) DESIGN GEOMETRY MINIMUM FEATURE SIZES: + + BOARD SIZE N/A × N/A mm + BOARD THICKNESS 1.647 mm + TRACE WIDTH N/A mm + TRACE TO TRACE 0.200 mm + MIN. HOLE (PTH) N/A mm + MIN. HOLE (NPTH) N/A mm + ANNULAR RING N/A mm + COPPER TO HOLE 0.250 mm + COPPER TO EDGE 0.500 mm + HOLE TO HOLE 0.250 mm + +11) ALL DIMENSIONS ARE IN MILLIMETERS UNLESS OTHERWISE + SPECIFIED. + +12) FOR REFERENCE ONLY THE STACKUP CORRESPONDS TO JLCPCB + STACKUP JLC04161H-7628. + 6f934d1 + 6f934d1 + 6f934d1 + /jkrauss/Test_4 + P99 + 2026-03-10 + DRAFT + NO_TAG+ (Unreleased) + 1:1 + Unless otherwise specified, components Values are in ohms, µF, and µH. + Cover Page + Block Diagram + Project Architecture + Circuit 1 + Circuit 2 + Circuit 3 + Parts List + ...................................... + ...................................... + ...................................... + ...................................... + ...................................... + ...................................... + ...................................... + ...................................... + ...................................... + ...................................... + ...................................... + ...................................... + ...................................... + TEMPLATE + + + + Title Page + Asymworks, LLC + NO_TAG+ (Unreleased) + + Test_6.kicad_sch + + + + + + + + + + + + + + Block Diagram + Asymworks, LLC + NO_TAG+ (Unreleased) + + Block_Diagram.kicad_sch + + + + + + + + + + + + + + Project Architecture + Asymworks, LLC + NO_TAG+ (Unreleased) + + Architecture.kicad_sch + + + + + + + + + + + + + + Circuit 1 + Asymworks, LLC + NO_TAG+ (Unreleased) + + Circuit-1.kicad_sch + + + + + + + + + + + + + + Circuit 2 + Asymworks, LLC + NO_TAG+ (Unreleased) + + Circuit-2.kicad_sch + + + + + + + + + + + + + + + <company>Asymworks, LLC</company> + <rev>NO_TAG+ (Unreleased)</rev> + <date/> + <source>Circuit-3.kicad_sch</source> + <comment number="1" value=""/> + <comment number="2" value=""/> + <comment number="3" value=""/> + <comment number="4" value=""/> + <comment number="5" value=""/> + <comment number="6" value=""/> + <comment number="7" value=""/> + <comment number="8" value=""/> + <comment number="9" value=""/> + </title_block> + </sheet> + <sheet number="7" name="/Parts List/" tstamps="/20edd200-9383-4d87-bd58-f882adb4f112/"> + <title_block> + <title>Parts List + Asymworks, LLC + NO_TAG+ (Unreleased) + + Parts_List.kicad_sch + + + + + + + + + + + + + + + + + diff --git a/kibot_run_preprocess.log b/kibot_run_preprocess.log new file mode 100644 index 0000000..e1a503a --- /dev/null +++ b/kibot_run_preprocess.log @@ -0,0 +1,5398 @@ +DEBUG:KiBot 1.8.6 verbose level: 0 started on 2026-03-10 16:52:54.030140 (kibot - __main__.py:524) +DEBUG:Filtering warnings we always get on CI/CD (kibot - __main__.py:438) +DEBUG:Command line options: {'--banner': None, + '--board-file': None, + '--cli-order': False, + '--config-outs': False, + '--copy-and-expand': False, + '--copy-options': False, + '--define': ['RELEASE_STATE=DRAFT', 'REVISION=NO_TAG+ (Unreleased)', 'REVISION=NO_TAG+ (Unreleased)', 'REVISION=NO_TAG+ (Unreleased)'], + '--defs-from-env': False, + '--defs-from-project': False, + '--dont-stop': False, + '--dry': False, + '--example': False, + '--fail-on-ignored': False, + '--fail-on-warnings': False, + '--global-redef': [], + '--gui': False, + '--gui-inject': None, + '--help': False, + '--help-banners': False, + '--help-dependencies': False, + '--help-errors': False, + '--help-filters': False, + '--help-global-options': False, + '--help-list-offsets': False, + '--help-list-outputs': False, + '--help-list-rotations': False, + '--help-output': None, + '--help-outputs': False, + '--help-preflights': False, + '--help-variants': False, + '--internal-check': False, + '--invert-sel': False, + '--json': False, + '--list': False, + '--list-variants': False, + '--log': 'kibot_run_preprocess.log', + '--makefile': None, + '--markdown': False, + '--no-auto-download': False, + '--no-priority': False, + '--no-warn': None, + '--only-groups': False, + '--only-names': False, + '--only-pre': False, + '--out-dir': '.', + '--output-name-first': False, + '--plot-config': 'kibot/yaml/kibot_main.yaml', + '--quick-start': False, + '--quiet': False, + '--rst': False, + '--schematic': None, + '--skip-pre': 'all', + '--start': '.', + '--stop-on-warnings': False, + '--sub-pcbs': False, + '--type': [], + '--variant': [], + '--verbose': 0, + '--version': False, + '--warn-ci-cd': False, + 'TARGET': ['preprocess_group']} (kibot - __main__.py:528) +DEBUG:Start of initialization (kibot - __main__.py:531) +DEBUG:Detected KiCad v9.0.7 (9.0.7+1 90000070) (kibot - __main__.py:340) +DEBUG:KiCad config path /root/.config/kicad/9.0 (kibot - __main__.py:392) +DEBUG:Command line arguments: +['/usr/local/bin/kibot', '-c', 'kibot/yaml/kibot_main.yaml', '-d', '.', '--log', 'kibot_run_preprocess.log', '--skip-pre', 'all', '-E', 'RELEASE_STATE=DRAFT', '-E', 'REVISION=NO_TAG+ (Unreleased)', 'preprocess_group'] (kibot - __main__.py:444) +DEBUG:Command line parsed: +{'--banner': None, + '--board-file': None, + '--cli-order': False, + '--config-outs': False, + '--copy-and-expand': False, + '--copy-options': False, + '--define': ['RELEASE_STATE=DRAFT', 'REVISION=NO_TAG+ (Unreleased)', 'REVISION=NO_TAG+ (Unreleased)', 'REVISION=NO_TAG+ (Unreleased)'], + '--defs-from-env': False, + '--defs-from-project': False, + '--dont-stop': False, + '--dry': False, + '--example': False, + '--fail-on-ignored': False, + '--fail-on-warnings': False, + '--global-redef': [], + '--gui': False, + '--gui-inject': None, + '--help': False, + '--help-banners': False, + '--help-dependencies': False, + '--help-errors': False, + '--help-filters': False, + '--help-global-options': False, + '--help-list-offsets': False, + '--help-list-outputs': False, + '--help-list-rotations': False, + '--help-output': None, + '--help-outputs': False, + '--help-preflights': False, + '--help-variants': False, + '--internal-check': False, + '--invert-sel': False, + '--json': False, + '--list': False, + '--list-variants': False, + '--log': 'kibot_run_preprocess.log', + '--makefile': None, + '--markdown': False, + '--no-auto-download': False, + '--no-priority': False, + '--no-warn': None, + '--only-groups': False, + '--only-names': False, + '--only-pre': False, + '--out-dir': '.', + '--output-name-first': False, + '--plot-config': 'kibot/yaml/kibot_main.yaml', + '--quick-start': False, + '--quiet': False, + '--rst': False, + '--schematic': None, + '--skip-pre': 'all', + '--start': '.', + '--stop-on-warnings': False, + '--sub-pcbs': False, + '--type': [], + '--variant': [], + '--verbose': 0, + '--version': False, + '--warn-ci-cd': False, + 'TARGET': ['preprocess_group']} (kibot - __main__.py:445) +DEBUG:- Processing dependencies for `global` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'Colorama', 'python_module': True, 'role': 'Get color messages in a portable way', 'debian': 'python3-colorama', 'arch': 'python-colorama'}, {'name': 'Requests', 'python_module': True, 'role': 'mandatory', 'debian': 'python3-requests', 'arch': 'python-requests'}, {'name': 'PyYAML', 'python_module': True, 'debian': 'python3-yaml', 'arch': 'python-yaml', 'module_name': 'yaml', 'role': 'mandatory'}, {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto'}, {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git'}, {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'RSVG', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}]}, {'name': 'Ghostscript', 'url': 'https://www.ghostscript.com/', 'url_down': 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases', 'debian': 'ghostscript', 'arch': 'ghostscript', 'command': 'gs', 'downloader': 'gs'}, {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy']}, {'name': 'KiCost', 'github': 'hildogjr/KiCost', 'pypi': 'KiCost', 'downloader': 'pytool'}, {'name': 'LXML', 'python_module': True, 'debian': 'python3-lxml', 'arch': 'python-lxml', 'downloader': 'python'}, {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0'}, {'from': 'KiKit', 'role': 'Separate multiboard projects'}, {'name': 'Xvfbwrapper', 'python_module': True, 'debian': 'python3-xvfbwrapper', 'arch': 'python-xvfbwrapper', 'downloader': 'python'}, {'name': 'Xvfb', 'url': 'https://www.x.org', 'command': 'xvfb-run', 'debian': 'xvfb', 'arch': 'xorg-server-xvfb', 'no_cmd_line_version': True}, {'name': 'Bash', 'url': 'https://www.gnu.org/software/bash/', 'debian': 'bash', 'arch': 'bash'}, {'name': 'Blender', 'url': 'https://www.blender.org/', 'debian': 'blender', 'arch': 'blender'}, {'name': 'Lark', 'python_module': True, 'role': 'mandatory', 'debian': 'python3-lark', 'arch': 'python-lark'}, {'name': 'ZStd', 'python_module': True, 'debian': 'python3-zstd', 'arch': 'python-zstd', 'downloader': 'python', 'role': 'Copy embedded files from the schematic to the KiCad cache'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'Colorama', 'python_module': True, 'role': 'Get color messages in a portable way', 'debian': 'python3-colorama', 'arch': 'python-colorama'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'name': 'Requests', 'python_module': True, 'role': 'mandatory', 'debian': 'python3-requests', 'arch': 'python-requests'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'name': 'PyYAML', 'python_module': True, 'debian': 'python3-yaml', 'arch': 'python-yaml', 'module_name': 'yaml', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering base dep {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'RSVG', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}]} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'Ghostscript', 'url': 'https://www.ghostscript.com/', 'url_down': 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases', 'debian': 'ghostscript', 'arch': 'ghostscript', 'command': 'gs', 'downloader': 'gs'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy']} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'KiCost', 'github': 'hildogjr/KiCost', 'pypi': 'KiCost', 'downloader': 'pytool'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'LXML', 'python_module': True, 'debian': 'python3-lxml', 'arch': 'python-lxml', 'downloader': 'python'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering dep {'from': 'KiKit', 'role': 'Separate multiboard projects'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiKit: {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0', 'from': 'KiKit', 'role': 'Separate multiboard projects'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering base dep {'name': 'Xvfbwrapper', 'python_module': True, 'debian': 'python3-xvfbwrapper', 'arch': 'python-xvfbwrapper', 'downloader': 'python'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'Xvfb', 'url': 'https://www.x.org', 'command': 'xvfb-run', 'debian': 'xvfb', 'arch': 'xorg-server-xvfb', 'no_cmd_line_version': True} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'Bash', 'url': 'https://www.gnu.org/software/bash/', 'debian': 'bash', 'arch': 'bash'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'Blender', 'url': 'https://www.blender.org/', 'debian': 'blender', 'arch': 'blender'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering dep {'name': 'Lark', 'python_module': True, 'role': 'mandatory', 'debian': 'python3-lark', 'arch': 'python-lark'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'name': 'ZStd', 'python_module': True, 'debian': 'python3-zstd', 'arch': 'python-zstd', 'downloader': 'python', 'role': 'Copy embedded files from the schematic to the KiCad cache'} (kibot - dep_downloader.py:1081) +DEBUG:Importing from /usr/local/lib/python3.13/dist-packages/kibot (kibot - kiplot.py:83) +DEBUG:- Importing fil_base (kibot - kiplot.py:91) +DEBUG:- Importing fil_expand_text_vars (kibot - kiplot.py:91) +DEBUG:- Importing fil_field_modify (kibot - kiplot.py:91) +DEBUG:- Importing fil_field_rename (kibot - kiplot.py:91) +DEBUG:- Importing fil_generic (kibot - kiplot.py:91) +DEBUG:- Importing fil_rot_footprint (kibot - kiplot.py:91) +DEBUG:- Importing fil_separate_pins (kibot - kiplot.py:91) +DEBUG:- Importing fil_spec_to_field (kibot - kiplot.py:91) +DEBUG:- Importing fil_subparts (kibot - kiplot.py:91) +DEBUG:- Importing fil_urlify (kibot - kiplot.py:91) +DEBUG:- Importing fil_value_split (kibot - kiplot.py:91) +DEBUG:- Importing fil_var_rename (kibot - kiplot.py:91) +DEBUG:- Importing fil_var_rename_kicost (kibot - kiplot.py:91) +DEBUG:- Importing globals (kibot - kiplot.py:91) +DEBUG:- Importing out_any_diff (kibot - kiplot.py:91) +DEBUG:- Importing out_any_drill (kibot - kiplot.py:91) +DEBUG:- Importing out_any_layer (kibot - kiplot.py:91) +DEBUG:- Importing out_any_navigate_results (kibot - kiplot.py:91) +DEBUG:- Importing out_any_pcb_print (kibot - kiplot.py:91) +DEBUG:- Importing out_any_sch_print (kibot - kiplot.py:91) +DEBUG:- Importing out_any_stencil (kibot - kiplot.py:91) +DEBUG:- Importing out_base (kibot - kiplot.py:91) +DEBUG:- Importing out_base_3d (kibot - kiplot.py:91) +DEBUG:- Importing out_blender_export (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_blender_export` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'Blender', 'role': 'mandatory', 'version': '3.4.0'}, {'from': 'ImageMagick', 'role': 'Automatically crop images'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'Blender', 'role': 'mandatory', 'version': '3.4.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Blender: {'name': 'Blender', 'url': 'https://www.blender.org/', 'debian': 'blender', 'arch': 'blender', 'from': 'Blender', 'role': 'mandatory', 'version': '3.4.0'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Automatically crop images'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Automatically crop images'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_boardview (kibot - kiplot.py:91) +DEBUG:- Importing out_bom (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_bom` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiCost', 'role': 'Find components costs and specs', 'version': '1.1.8'}, {'from': 'RSVG', 'role': 'SVG logos for the BoM'}, {'name': 'XLSXWriter', 'role': 'Create XLSX files', 'python_module': True, 'debian': 'python3-xlsxwriter', 'arch': 'python-xlsxwriter', 'version': '1.1.2', 'downloader': 'python'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiCost', 'role': 'Find components costs and specs', 'version': '1.1.8'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiCost: {'name': 'KiCost', 'github': 'hildogjr/KiCost', 'pypi': 'KiCost', 'downloader': 'pytool', 'from': 'KiCost', 'role': 'Find components costs and specs', 'version': '1.1.8'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'SVG logos for the BoM'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'RSVG', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'SVG logos for the BoM'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'name': 'XLSXWriter', 'role': 'Create XLSX files', 'python_module': True, 'debian': 'python3-xlsxwriter', 'arch': 'python-xlsxwriter', 'version': '1.1.2', 'downloader': 'python'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_bom_labels (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_bom_labels` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'ReportLab', 'role': 'Create a PDF with BoM labels', 'python_module': True, 'debian': 'python3-reportlab', 'arch': 'python-reportlab', 'downloader': 'python'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'ReportLab', 'role': 'Create a PDF with BoM labels', 'python_module': True, 'debian': 'python3-reportlab', 'arch': 'python-reportlab', 'downloader': 'python'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_compress (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_compress` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'RAR', 'url': 'https://www.rarlab.com/', 'url_down': 'https://www.rarlab.com/download.htm', 'help_option': '-?', 'downloader': 'rar', 'role': 'Compress in RAR format', 'debian': 'rar', 'arch': 'rar(AUR)'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'RAR', 'url': 'https://www.rarlab.com/', 'url_down': 'https://www.rarlab.com/download.htm', 'help_option': '-?', 'downloader': 'rar', 'role': 'Compress in RAR format', 'debian': 'rar', 'arch': 'rar(AUR)'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_copy_files (kibot - kiplot.py:91) +DEBUG:- Importing out_diff (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_diff` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'KiCad PCB/SCH Diff', 'version': '2.5.3', 'role': 'mandatory', 'github': 'INTI-CMNB/KiDiff', 'command': 'kicad-diff.py', 'pypi': 'kidiff', 'downloader': 'pytool', 'id': 'KiDiff'}, {'from': 'Git', 'role': 'Compare with files in the repo'}, {'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'KiCad PCB/SCH Diff', 'version': '2.5.3', 'role': 'mandatory', 'github': 'INTI-CMNB/KiDiff', 'command': 'kicad-diff.py', 'pypi': 'kidiff', 'downloader': 'pytool', 'id': 'KiDiff'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Compare with files in the repo'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Compare with files in the repo'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_download_datasheets (kibot - kiplot.py:91) +DEBUG:- Importing out_dxf (kibot - kiplot.py:91) +DEBUG:- Importing out_dxf_sch_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_dxf_sch_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_excellon (kibot - kiplot.py:91) +DEBUG:- Importing out_export_3d (kibot - kiplot.py:91) +DEBUG:- Importing out_gencad (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_gencad` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.5'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.5'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.5'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_gerb_drill (kibot - kiplot.py:91) +DEBUG:- Importing out_gerber (kibot - kiplot.py:91) +DEBUG:- Importing out_hpgl (kibot - kiplot.py:91) +DEBUG:- Importing out_hpgl_sch_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_hpgl_sch_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_ibom (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_ibom` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'Interactive HTML BoM', 'role': 'mandatory', 'github': 'INTI-CMNB/InteractiveHtmlBom', 'command': 'generate_interactive_bom.py', 'no_cmd_line_version_old': True, 'plugin_dirs': ['InteractiveHtmlBom', 'InteractiveHtmlBom/InteractiveHtmlBom', 'org_openscopeproject_InteractiveHtmlBom', 'org_openscopeproject_InteractiveHtmlBom/InteractiveHtmlBom'], 'version': '2.7.0', 'downloader': 'pytool', 'id': 'ibom'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'Interactive HTML BoM', 'role': 'mandatory', 'github': 'INTI-CMNB/InteractiveHtmlBom', 'command': 'generate_interactive_bom.py', 'no_cmd_line_version_old': True, 'plugin_dirs': ['InteractiveHtmlBom', 'InteractiveHtmlBom/InteractiveHtmlBom', 'org_openscopeproject_InteractiveHtmlBom', 'org_openscopeproject_InteractiveHtmlBom/InteractiveHtmlBom'], 'version': '2.7.0', 'downloader': 'pytool', 'id': 'ibom'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_info (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_info` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'Show KiAuto installation information', 'version': '2.0.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'Show KiAuto installation information', 'version': '2.0.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'Show KiAuto installation information', 'version': '2.0.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_ipc2581 (kibot - kiplot.py:91) +DEBUG:- Importing out_jobset (kibot - kiplot.py:91) +DEBUG:- Importing out_kibom (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_kibom` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'KiBoM', 'role': 'mandatory', 'github': 'INTI-CMNB/KiBoM', 'command': 'KiBOM_CLI.py', 'version': '1.9.1', 'downloader': 'pytool'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'KiBoM', 'role': 'mandatory', 'github': 'INTI-CMNB/KiBoM', 'command': 'KiBOM_CLI.py', 'version': '1.9.1', 'downloader': 'pytool'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_kicanvas (kibot - kiplot.py:91) +DEBUG:- Importing out_kicost (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_kicost` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiCost', 'role': 'mandatory', 'version': '1.1.7'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiCost', 'role': 'mandatory', 'version': '1.1.7'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiCost: {'name': 'KiCost', 'github': 'hildogjr/KiCost', 'pypi': 'KiCost', 'downloader': 'pytool', 'from': 'KiCost', 'role': 'mandatory', 'version': '1.1.7'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_kikit_present (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_kikit_present` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'markdown2', 'python_module': True, 'debian': 'python3-markdown2', 'arch': 'python-markdown2', 'role': 'mandatory'}, {'from': 'Git', 'role': 'Find commit hash and/or date'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'markdown2', 'python_module': True, 'debian': 'python3-markdown2', 'arch': 'python-markdown2', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_kiri (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_kiri` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'KiCad PCB/SCH Diff', 'version': '2.5.1', 'role': 'mandatory', 'github': 'INTI-CMNB/KiDiff', 'command': 'kicad-diff.py', 'pypi': 'kidiff', 'downloader': 'pytool', 'id': 'KiDiff'}, {'from': 'Git', 'role': 'Compare with files in the repo'}, {'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'KiCad PCB/SCH Diff', 'version': '2.5.1', 'role': 'mandatory', 'github': 'INTI-CMNB/KiDiff', 'command': 'kicad-diff.py', 'pypi': 'kidiff', 'downloader': 'pytool', 'id': 'KiDiff'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Compare with files in the repo'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Compare with files in the repo'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_navigate_results (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_navigate_results` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'RSVG', 'role': 'Create outputs preview', 'id': 'rsvg1'}, {'from': 'RSVG', 'role': 'Create PNG icons', 'id': 'rsvg2'}, {'from': 'Ghostscript', 'role': 'Create outputs preview'}, {'from': 'ImageMagick', 'role': 'Create outputs preview'}, {'from': 'Git', 'role': 'Find origin url'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create outputs preview', 'id': 'rsvg1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'rsvg1', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create PNG icons', 'id': 'rsvg2'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'rsvg2', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create PNG icons'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Ghostscript', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Ghostscript: {'name': 'Ghostscript', 'url': 'https://www.ghostscript.com/', 'url_down': 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases', 'debian': 'ghostscript', 'arch': 'ghostscript', 'command': 'gs', 'downloader': 'gs', 'from': 'Ghostscript', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find origin url'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find origin url'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_navigate_results_rb (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_navigate_results_rb` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'RSVG', 'role': 'Create outputs preview', 'id': 'rsvg1'}, {'from': 'RSVG', 'role': 'Create PNG icons', 'id': 'rsvg2'}, {'from': 'Ghostscript', 'role': 'Create outputs preview'}, {'from': 'ImageMagick', 'role': 'Create outputs preview'}, {'from': 'Git', 'role': 'Find origin url'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create outputs preview', 'id': 'rsvg1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'rsvg1', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create PNG icons', 'id': 'rsvg2'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'rsvg2', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create PNG icons'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Ghostscript', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Ghostscript: {'name': 'Ghostscript', 'url': 'https://www.ghostscript.com/', 'url_down': 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases', 'debian': 'ghostscript', 'arch': 'ghostscript', 'command': 'gs', 'downloader': 'gs', 'from': 'Ghostscript', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find origin url'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find origin url'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_netlist (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_netlist` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.0.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.0.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.0.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_odb (kibot - kiplot.py:91) +DEBUG:- Importing out_panelize (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_panelize` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiKit', 'role': 'mandatory', 'version': '1.5.1'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiKit', 'role': 'mandatory', 'version': '1.5.1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiKit: {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0', 'from': 'KiKit', 'role': 'mandatory', 'version': '1.5.1'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_pcb2blender_tools (kibot - kiplot.py:91) +DEBUG:- Importing out_pcb_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_pcb_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'RSVG', 'role': 'Create PDF, PNG, PS and EPS formats', 'id': 'rsvg1'}, {'from': 'Ghostscript', 'role': 'Create PNG, PS and EPS formats'}, {'from': 'ImageMagick', 'role': 'Create monochrome prints and scaled PNG files'}, {'from': 'KiAuto', 'command': 'pcbnew_do', 'role': 'Print the page frame in GUI mode', 'version': '1.6.7'}, {'from': 'LXML', 'role': 'mandatory'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create PDF, PNG, PS and EPS formats', 'id': 'rsvg1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'rsvg1', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create PDF, PNG, PS and EPS formats'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Ghostscript', 'role': 'Create PNG, PS and EPS formats'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Ghostscript: {'name': 'Ghostscript', 'url': 'https://www.ghostscript.com/', 'url_down': 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases', 'debian': 'ghostscript', 'arch': 'ghostscript', 'command': 'gs', 'downloader': 'gs', 'from': 'Ghostscript', 'role': 'Create PNG, PS and EPS formats'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Create monochrome prints and scaled PNG files'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Create monochrome prints and scaled PNG files'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'KiAuto', 'command': 'pcbnew_do', 'role': 'Print the page frame in GUI mode', 'version': '1.6.7'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'Print the page frame in GUI mode', 'version': '1.6.7'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'LXML', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from LXML: {'name': 'LXML', 'python_module': True, 'debian': 'python3-lxml', 'arch': 'python-lxml', 'downloader': 'python', 'from': 'LXML', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_pcb_stats (kibot - kiplot.py:91) +DEBUG:- Importing out_pcb_variant (kibot - kiplot.py:91) +DEBUG:- Importing out_pcbdraw (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_pcbdraw` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'RSVG', 'role': 'Create PNG, JPG and BMP images'}, {'from': 'ImageMagick', 'role': 'Create JPG and BMP images'}, {'from': 'LXML', 'role': 'mandatory'}, {'name': 'numpy', 'python_module': True, 'debian': 'python3-numpy', 'arch': 'python-numpy', 'downloader': 'python', 'role': 'Automatically adjust SVG margin'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create PNG, JPG and BMP images'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'RSVG', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create PNG, JPG and BMP images'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Create JPG and BMP images'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Create JPG and BMP images'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'LXML', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from LXML: {'name': 'LXML', 'python_module': True, 'debian': 'python3-lxml', 'arch': 'python-lxml', 'downloader': 'python', 'from': 'LXML', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'name': 'numpy', 'python_module': True, 'debian': 'python3-numpy', 'arch': 'python-numpy', 'downloader': 'python', 'role': 'Automatically adjust SVG margin'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_pdf (kibot - kiplot.py:91) +DEBUG:- Importing out_pdf_pcb_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_pdf_pcb_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_pdf_sch_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_pdf_sch_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_pdfunite (kibot - kiplot.py:91) +DEBUG:- Importing out_populate (kibot - kiplot.py:91) +DEBUG:- Importing out_position (kibot - kiplot.py:91) +DEBUG:- Importing out_ps (kibot - kiplot.py:91) +DEBUG:- Importing out_ps_sch_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_ps_sch_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_qr_lib (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_qr_lib` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'QRCodeGen', 'role': 'mandatory', 'python_module': True, 'downloader': 'python', 'debian': 'python3-qrcodegen'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'QRCodeGen', 'role': 'mandatory', 'python_module': True, 'downloader': 'python', 'debian': 'python3-qrcodegen'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_render_3d (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_render_3d` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.1'}, {'from': 'ImageMagick', 'role': 'Automatically crop images'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.1'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Automatically crop images'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Automatically crop images'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_report (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_report` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'Pandoc', 'role': 'Create PDF/ODF/DOCX files', 'url': 'https://pandoc.org/', 'url_down': 'https://github.com/jgm/pandoc/releases', 'debian': 'pandoc', 'arch': 'pandoc', 'extra_deb': ['texlive', 'texlive-latex-base', 'texlive-latex-recommended'], 'extra_arch': ['texlive-core'], 'comments': 'In CI/CD environments: the `kicad_auto_test` docker image contains it.'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'Pandoc', 'role': 'Create PDF/ODF/DOCX files', 'url': 'https://pandoc.org/', 'url_down': 'https://github.com/jgm/pandoc/releases', 'debian': 'pandoc', 'arch': 'pandoc', 'extra_deb': ['texlive', 'texlive-latex-base', 'texlive-latex-recommended'], 'extra_arch': ['texlive-core'], 'comments': 'In CI/CD environments: the `kicad_auto_test` docker image contains it.'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_sch_variant (kibot - kiplot.py:91) +DEBUG:- Importing out_stencil_3d (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_stencil_3d` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiKit', 'role': 'mandatory'}, {'name': 'OpenSCAD', 'url': 'https://openscad.org/', 'url_down': 'https://openscad.org/downloads.html', 'command': 'openscad', 'debian': 'openscad', 'arch': 'openscad', 'role': 'mandatory'}, {'from': 'Xvfbwrapper', 'role': 'mandatory'}, {'from': 'Xvfb', 'role': 'mandatory'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiKit', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiKit: {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0', 'from': 'KiKit', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'name': 'OpenSCAD', 'url': 'https://openscad.org/', 'url_down': 'https://openscad.org/downloads.html', 'command': 'openscad', 'debian': 'openscad', 'arch': 'openscad', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'from': 'Xvfbwrapper', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Xvfbwrapper: {'name': 'Xvfbwrapper', 'python_module': True, 'debian': 'python3-xvfbwrapper', 'arch': 'python-xvfbwrapper', 'downloader': 'python', 'from': 'Xvfbwrapper', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Xvfb', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Xvfb: {'name': 'Xvfb', 'url': 'https://www.x.org', 'command': 'xvfb-run', 'debian': 'xvfb', 'arch': 'xorg-server-xvfb', 'no_cmd_line_version': True, 'from': 'Xvfb', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_stencil_for_jig (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_stencil_for_jig` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiKit', 'role': 'mandatory'}, {'name': 'OpenSCAD', 'url': 'https://openscad.org/', 'url_down': 'https://openscad.org/downloads.html', 'command': 'openscad', 'debian': 'openscad', 'arch': 'openscad', 'role': 'mandatory'}, {'from': 'Xvfbwrapper', 'role': 'mandatory'}, {'from': 'Xvfb', 'role': 'mandatory'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiKit', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiKit: {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0', 'from': 'KiKit', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'name': 'OpenSCAD', 'url': 'https://openscad.org/', 'url_down': 'https://openscad.org/downloads.html', 'command': 'openscad', 'debian': 'openscad', 'arch': 'openscad', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'from': 'Xvfbwrapper', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Xvfbwrapper: {'name': 'Xvfbwrapper', 'python_module': True, 'debian': 'python3-xvfbwrapper', 'arch': 'python-xvfbwrapper', 'downloader': 'python', 'from': 'Xvfbwrapper', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Xvfb', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Xvfb: {'name': 'Xvfb', 'url': 'https://www.x.org', 'command': 'xvfb-run', 'debian': 'xvfb', 'arch': 'xorg-server-xvfb', 'no_cmd_line_version': True, 'from': 'Xvfb', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_step (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_step` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.1', 'command': 'kicad2step_do'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.1', 'command': 'kicad2step_do'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'kicad2step_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.1'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_svg (kibot - kiplot.py:91) +DEBUG:- Importing out_svg_pcb_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_svg_pcb_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_svg_sch_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_svg_sch_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_vrml (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_vrml` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '2.1.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '2.1.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.1.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_annotate_pcb (kibot - kiplot.py:91) +DEBUG:- Importing pre_annotate_power (kibot - kiplot.py:91) +DEBUG:- Importing pre_any_replace (kibot - kiplot.py:91) +DEBUG:- Importing pre_any_xrc (kibot - kiplot.py:91) +DEBUG:- Importing pre_base (kibot - kiplot.py:91) +DEBUG:- Importing pre_check_fields (kibot - kiplot.py:91) +DEBUG:- Importing pre_check_zone_fills (kibot - kiplot.py:91) +DEBUG:- Importing pre_consolidate_pcbs (kibot - kiplot.py:91) +DEBUG:- Importing pre_convert_pcb (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_convert_pcb` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.2'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.2'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.2'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_draw_fancy_stackup (kibot - kiplot.py:91) +DEBUG:- Importing pre_draw_stackup (kibot - kiplot.py:91) +DEBUG:- Importing pre_drc (kibot - kiplot.py:91) +DEBUG:- Importing pre_erc (kibot - kiplot.py:91) +DEBUG:- Importing pre_erc_warnings (kibot - kiplot.py:91) +DEBUG:- Importing pre_fill_zones (kibot - kiplot.py:91) +DEBUG:- Importing pre_filters (kibot - kiplot.py:91) +DEBUG:- Importing pre_ignore_unconnected (kibot - kiplot.py:91) +DEBUG:- Importing pre_include_table (kibot - kiplot.py:91) +DEBUG:- Importing pre_pcb_replace (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_pcb_replace` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'Git', 'role': 'Find commit hash and/or date'}, {'from': 'Bash', 'role': 'Run external commands to create replacement text'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Bash: {'name': 'Bash', 'url': 'https://www.gnu.org/software/bash/', 'debian': 'bash', 'arch': 'bash', 'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_run_drc (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_run_drc` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '2.0.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '2.0.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.0.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_run_erc (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_run_erc` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.2.1'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.2.1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.2.1'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_sch_replace (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_sch_replace` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'Git', 'role': 'Find commit hash and/or date'}, {'from': 'Bash', 'role': 'Run external commands to create replacement text'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Bash: {'name': 'Bash', 'url': 'https://www.gnu.org/software/bash/', 'debian': 'bash', 'arch': 'bash', 'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_set_text_variables (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_set_text_variables` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'Git', 'role': 'Find commit hash and/or date'}, {'from': 'Bash', 'role': 'Run external commands to create replacement text'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Bash: {'name': 'Bash', 'url': 'https://www.gnu.org/software/bash/', 'debian': 'bash', 'arch': 'bash', 'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_update_footprint (kibot - kiplot.py:91) +DEBUG:- Importing pre_update_pcb_characteristics (kibot - kiplot.py:91) +DEBUG:- Importing pre_update_qr (kibot - kiplot.py:91) +DEBUG:- Importing pre_update_stackup (kibot - kiplot.py:91) +DEBUG:- Importing pre_update_xml (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_update_xml` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '1.5.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '1.5.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '1.5.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing var_base (kibot - kiplot.py:91) +DEBUG:- Importing var_ibom (kibot - kiplot.py:91) +DEBUG:- Importing var_kibom (kibot - kiplot.py:91) +DEBUG:- Importing var_kicost (kibot - kiplot.py:91) +DEBUG:Deactivating macros (kibot - kiplot.py:117) +DEBUG:End of initialization (kibot - __main__.py:537) +DEBUG:Using configuration file: `kibot/yaml/kibot_main.yaml` (kibot - __main__.py:276) +Using SCH file: Test_6.kicad_sch +DEBUG:Using schematic: `/workspace/jkrauss/Test_6/Test_6.kicad_sch` (kibot - kiplot.py:979) +DEBUG:Real schematic name: `/workspace/jkrauss/Test_6/Test_6.kicad_sch` (kibot - kiplot.py:980) +DEBUG:Using PCB: `/workspace/jkrauss/Test_6/Test_6.kicad_pcb` (kibot - kiplot.py:1010) +DEBUG:Real PCB name: `/workspace/jkrauss/Test_6/Test_6.kicad_pcb` (kibot - kiplot.py:1011) +DEBUG:Starting to load the configuration (kibot - __main__.py:607) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @PROJECT_CODE@ -> P99 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ASSEMBLY_NUMBER@ -> A99-9000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ASSEMBLY_NAME@ -> Assembly Name () (kibot - config_reader.py:78) +DEBUG:- Replacing @GIT_URL@ -> /jkrauss/Test_4 () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMPANY@ -> Asymworks, LLC () (kibot - config_reader.py:78) +DEBUG:- Replacing @DESIGNER@ -> JPK () (kibot - config_reader.py:78) +DEBUG:- Replacing @PANEL_800_OUTPUT@ -> panel_801 () (kibot - config_reader.py:78) +DEBUG:- Replacing @PANEL_800_CONFIG@ -> @PANELS_DIR@/panel-800.json () (kibot - config_reader.py:78) +DEBUG:- Replacing @PANEL_800_TITLE@ -> Panel Fabrication (Panel -800) () (kibot - config_reader.py:78) +DEBUG:- Replacing @CHECK_ZONE_FILLS@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @STACKUP_TABLE_NOTE@ -> external layer thicknesses are specified after plating () (kibot - config_reader.py:78) +DEBUG:- Replacing @IPN_FIELD@ -> Asymworks IPN () (kibot - config_reader.py:78) +DEBUG:- Replacing @MPN_FIELD@ -> Manufacturer PN () (kibot - config_reader.py:78) +DEBUG:- Replacing @MAN_FIELD@ -> Manufacturer () (kibot - config_reader.py:78) +DEBUG:- Replacing @GROUP_ROUND_SLOTS@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @GROUP_PTH_NPTH@ -> no () (kibot - config_reader.py:78) +DEBUG:- Replacing @GROUP_PTH_NPTH_DRL@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @PLOT_REFS@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @PROTEL_EXTENSIONS@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @SUBTRACT_MASK@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCELLON_METRIC_UNITS@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @TP_EXCLUDE_REFS@ -> [MB*] () (kibot - config_reader.py:78) +DEBUG:- Replacing @COLOR_THEME@ -> Altium_Theme () (kibot - config_reader.py:78) +DEBUG:- Replacing @SHEET_WKS_SCH@ -> templates/Asymworks_SCH.kicad_wks () (kibot - config_reader.py:78) +DEBUG:- Replacing @SHEET_WKS_PCB@ -> templates/Asymworks_PCB.kicad_wks () (kibot - config_reader.py:78) +DEBUG:- Replacing @SHEET_WKS_ASSY@ -> templates/Asymworks_PCBA.kicad_wks () (kibot - config_reader.py:78) +DEBUG:- Replacing @FAB_SCALING@ -> 1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ASSEMBLY_SCALING@ -> 1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @RENDER_DNF_FILTER@ -> _kibom_dnf_Config () (kibot - config_reader.py:78) +DEBUG:- Replacing @3D_VIEWER_ROT_X@ -> 2 () (kibot - config_reader.py:78) +DEBUG:- Replacing @3D_VIEWER_ROT_Y@ -> -1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @3D_VIEWER_ROT_Z@ -> 1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @3D_VIEWER_ZOOM@ -> -1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @KEY_COLOR@ -> #FF00FF () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_SAMPLES@ -> 20 () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_ROT_X@ -> 30 () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_ROT_Y@ -> 10 () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_ROT_Z@ -> 10 () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_RESOLUTION_X@ -> 1500 () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_RESOLUTION_Y@ -> 1500 () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_TEXTURE_DPI@ -> 1031.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_DIFFUSE_HEIGHT@ -> 10.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_DIFFUSE_RADIUS@ -> 6.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @OUTPUT_DIR@ -> ./ () (kibot - config_reader.py:78) +DEBUG:- Replacing @REPORT_DIR@ -> reports () (kibot - config_reader.py:78) +DEBUG:- Replacing @SCHEMATIC_DIR@ -> schematic () (kibot - config_reader.py:78) +DEBUG:- Replacing @ASSEMBLY_DIR@ -> @MANUFACTURING_DIR@/assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @FABRICATION_DIR@ -> @MANUFACTURING_DIR@/fab () (kibot - config_reader.py:78) +DEBUG:- Replacing @GERBERS_DIR@ -> @FABRICATION_DIR@/gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @FAB_DRILL_TABLES_DIR@ -> @FABRICATION_DIR@/drill-tables () (kibot - config_reader.py:78) +DEBUG:- Replacing @TESTPOINTS_DIR@ -> @TESTING_DIR@/testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @MODELS_DIR@ -> models () (kibot - config_reader.py:78) +DEBUG:- Replacing @NOTES_DIR@ -> notes () (kibot - config_reader.py:78) +DEBUG:- Replacing @RENDER_DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @SCRIPTS_DIR@ -> @RESOURCES_DIR@/scripts () (kibot - config_reader.py:78) +DEBUG:- Replacing @PANELS_DIR@ -> panels () (kibot - config_reader.py:78) +DEBUG:- Replacing @JLCPCB_FAB_DIR@ -> @MANUFACTURING_DIR@/jlcpcb () (kibot - config_reader.py:78) +DEBUG:- Replacing @JLCPCB_ASSY_DIR@ -> @MANUFACTURING_DIR@/jlcpcb () (kibot - config_reader.py:78) +DEBUG:- Replacing @JLCPCB_GERBERS_DIR@ -> @MANUFACTURING_DIR@/jlcpcb/gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_TITLE_PAGE@ -> AssyTitlePage () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_DNP_TOP@ -> F.DNP () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_DNP_BOTTOM@ -> B.DNP () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_DRILL_MAP@ -> DrillMap () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_TP_LIST_TOP@ -> F.TestPointList () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_TP_LIST_BOTTOM@ -> B.TestPointList () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_ASSEMBLY_TEXT_TOP@ -> F.AssemblyText () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_ASSEMBLY_TEXT_BOTTOM@ -> B.AssemblyText () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_DNP_CROSS_TOP@ -> F.DNP () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_DNP_CROSS_BOTTOM@ -> B.DNP () (kibot - config_reader.py:78) +DEBUG:- Replacing @FILT_FIELD_RENAME@ -> field_rename () (kibot - config_reader.py:78) +DEBUG:- Replacing @FILT_LCSC_PARTS@ -> only_lcsc_parts () (kibot - config_reader.py:78) +DEBUG:- Replacing @FILT_TP_ONLY@ -> only_testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @FILT_TP_EXCLUDE@ -> exclude_testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @FILT_TP_TOP_ONLY@ -> only_testpoints_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @FILT_TP_BOTTOM_ONLY@ -> only_testpoints_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @NETLIST_OUTPUT@ -> netlist () (kibot - config_reader.py:78) +DEBUG:- Replacing @PDF_SCHEMATIC_OUTPUT@ -> pdf_schematic () (kibot - config_reader.py:78) +DEBUG:- Replacing @PDF_FABRICATION_OUTPUT@ -> pdf_fabrication () (kibot - config_reader.py:78) +DEBUG:- Replacing @PDF_ASSEMBLY_OUTPUT@ -> pdf_assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @CSV_BOM_OUTPUT@ -> csv_bom () (kibot - config_reader.py:78) +DEBUG:- Replacing @HTML_IBOM_OUTPUT@ -> html_bom_interactive () (kibot - config_reader.py:78) +DEBUG:- Replacing @HTML_BOM_OUTPUT@ -> html_bom () (kibot - config_reader.py:78) +DEBUG:- Replacing @CSV_COMP_COUNT_OUPUT@ -> csv_comp_count () (kibot - config_reader.py:78) +DEBUG:- Replacing @CSV_IMPEDANCE_TABLE_OUTPUT@ -> csv_impedance_table () (kibot - config_reader.py:78) +DEBUG:- Replacing @GERBER_OUTPUT@ -> gbr_gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @ODB_OUTPUT@ -> zip_odb () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCELLON_DRILL_OUTPUT@ -> drl_excellon () (kibot - config_reader.py:78) +DEBUG:- Replacing @PDF_DRILL_MAP_OUTPUT@ -> pdf_drill_map () (kibot - config_reader.py:78) +DEBUG:- Replacing @CSV_DRILL_TABLE_OUTPUT@ -> csv_drill_table () (kibot - config_reader.py:78) +DEBUG:- Replacing @CSV_POS_OUTPUT@ -> csv_position () (kibot - config_reader.py:78) +DEBUG:- Replacing @CSV_TP_OUTPUT@ -> csv_testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @CSV_TP_TOP_OUTPUT@ -> csv_testpoints_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @CSV_TP_BOTTOM_OUTPUT@ -> csv_testpoints_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @ZIP_COMPRESS_FAB_OUTPUT@ -> zip_compress_fab () (kibot - config_reader.py:78) +DEBUG:- Replacing @STEP_OUTPUT@ -> step () (kibot - config_reader.py:78) +DEBUG:- Replacing @GLB_OUTPUT@ -> glb () (kibot - config_reader.py:78) +DEBUG:- Replacing @PCBDRAW_2D_TOP_PCB_OUTPUT@ -> pcbdraw_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @PCBDRAW_2D_BOT_PCB_OUTPUT@ -> pcbdraw_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @PNG_3D_VIEWER_TOP@ -> png_3d_viewer_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @PNG_3D_VIEWER_BOT@ -> png_3d_viewer_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @PNG_3D_VIEWER_ANGLED_TOP@ -> png_3d_viewer_angled_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @PNG_3D_VIEWER_ANGLED_BOT@ -> png_3d_viewer_angled_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_3D_TOP@ -> blender_3d_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_3D_BOT@ -> blender_3d_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_3D_ANGLED_TOP@ -> blender_3d_angled_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @BLENDER_3D_ANGLED_BOT@ -> blender_3d_angled_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @TXT_SCH_NOTES_OUTPUT@ -> txt_schematic_notes () (kibot - config_reader.py:78) +DEBUG:- Replacing @TXT_FAB_NOTES_OUTPUT@ -> txt_fabrication_notes () (kibot - config_reader.py:78) +DEBUG:- Replacing @TXT_ASSY_NOTES_OUTPUT@ -> txt_assembly_notes () (kibot - config_reader.py:78) +DEBUG:- Replacing @HTML_KIRI_OUTPUT@ -> html_kiri () (kibot - config_reader.py:78) +DEBUG:- Replacing @HTML_NAV_RES_OUTPUT@ -> html_navigate_results () (kibot - config_reader.py:78) +DEBUG:- Replacing @JLCPCB_GERBER_OUTPUT@ -> jlcpcb_gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @JLCPCB_FABPACK_OUTPUT@ -> jlcpcb_fabpack () (kibot - config_reader.py:78) +DEBUG:- Replacing @JLCPCB_BOM_OUTPUT@ -> jlcpcb_bom () (kibot - config_reader.py:78) +DEBUG:- Replacing @JLCPCB_CPL_OUTPUT@ -> jlcpcb_cpl () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @MANUFACTURING_DIR@ -> mfg () (kibot - config_reader.py:78) +DEBUG:- Replacing @FABRICATION_DIR@ -> @MANUFACTURING_DIR@/fab () (kibot - config_reader.py:78) +DEBUG:- Replacing @TESTING_DIR@ -> test () (kibot - config_reader.py:78) +DEBUG:- Replacing @RESOURCES_DIR@ -> kibot () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @MANUFACTURING_DIR@ -> mfg () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot configuration file for Asymworks_KiBot Template +# KiCad 9.0 + +kibot: + version: 1 + +variants: [] + +# ============================================================================ +# Output Groups + +groups: + + # Top-Level Groups ========================================================= + + # Pre-Process Group (generates Notes and Netlist for set_text_variables) --- + - name: preprocess_group + outputs: + - netlist + - txt_schematic_notes + - txt_fabrication_notes + - txt_assembly_notes + - tables + + # Draft Outputs Group (used in DRAFT state only) --------------------------- + - name: draft_group + outputs: + - netlist + - txt_schematic_notes + - pdf_schematic + - csv_bom + - html_bom + + # All Outputs Group (used in all other states) ----------------------------- + - name: all_group + outputs: + - bom + - renders + - models + - fab + - jlcpcb + - panels + - assembly + - pdf_schematic + - html_navigate_results + + # All Outputs Group, including KiRi (not enabled by default) --------------- + - name: all_group_kiri + outputs: + - bom + - renders + - models + - fab + - jlcpcb + - panels + - assembly + - pdf_schematic + - html_kiri + - html_navigate_results + + # Panel Fabrication Outputs Group (not used in DRAFT state) ---------------- + - name: panel_fab_jlcpcb_group + outputs: [] + + # Output Sub-Groups ======================================================== + + # Bill of Material Outputs ------------------------------------------------- + - name: bom + outputs: + - csv_bom + - html_bom + - html_bom_interactive + + # PCB Render Outputs ------------------------------------------------------- + - name: renders + outputs: + - pcbdraw_top + - pcbdraw_bottom + - blender_3d_top + - blender_3d_bottom + - blender_3d_angled_top + - blender_3d_angled_bottom + + # KiCad 3D Viewer Renders (render_3d) are currently disabled as they do + # not look very good in KiCad 9 and they cause a warning in the KiBot + # output. + # - png_3d_viewer_top + # - png_3d_viewer_bottom + # - png_3d_viewer_angled_top + # - png_3d_viewer_angled_bottom + + # PCB 3d Model Outputs ----------------------------------------------------- + - name: models + outputs: + - step + - glb + + # Fabrication Outputs ------------------------------------------------------ + - name: fab + outputs: + - gbr_gerbers + - drl_excellon + - zip_odb + - pdf_drill_map + - pdf_fabrication + - zip_compress_fab + + - name: tables + outputs: + - csv_comp_count + - csv_impedance_table + - csv_drill_table + - testpoints + + - name: testpoints + outputs: + - csv_testpoints + - csv_testpoints_top + - csv_testpoints_bottom + + # JLCPCB Fabrication and Assembly Outputs ---------------------------------- + - name: jlcpcb + outputs: + - jlcpcb_gerbers + - jlcpcb_fabpack + - jlcpcb_bom + - jlcpcb_cpl + + # Assembly Outputs --------------------------------------------------------- + - name: assembly + outputs: + - csv_position + - pdf_assembly + + # Panelization Outputs ----------------------------------------------------- + - name: panels + outputs: [ panel_801 ] + +# ============================================================================ +# Imports + +import: + + # Global Parameters ======================================================== + - file: kibot_globals.yaml + definitions: + OUTPUT_DIR: ./ + LAYER_DNP_TOP: F.DNP + LAYER_DNP_BOT: B.DNP + + # Filters ================================================================== + + - file: kibot_filt_field_rename.yaml + definitions: + NAME: field_rename + COMMENT: Rename fields + MPN_FIELD: Manufacturer PN + MAN_FIELD: Manufacturer + + - file: kibot_filt_testpoints.yaml + definitions: + NAME: only_testpoints + COMMENT: Include only testpoints + + - file: kibot_filt_exclude_testpoints.yaml + definitions: + NAME: exclude_testpoints + COMMENT: Exclude only testpoints + + - file: kibot_filt_testpoints.yaml + definitions: + NAME: only_testpoints_top + COMMENT: Select only top testpoints + EXCLUDE_BOTTOM: true + EXCLUDE_REFS: "[MB*]" + + - file: kibot_filt_testpoints.yaml + definitions: + NAME: only_testpoints_bottom + COMMENT: Select only bottom testpoints + EXCLUDE_TOP: true + EXCLUDE_REFS: "[MB*]" + + - file: kibot_filt_lcsc_parts.yaml + definitions: + NAME: only_lcsc_parts + COMMENT: Only parts with LCSC Part Number + + # Preflights =============================================================== + - file: kibot_pre_set_text_variables.yaml + definitions: + PROJECT_CODE: P99 + ASSEMBLY_NUMBER: A99-9000 + ASSEMBLY_NAME: Assembly Name + COMPANY: Asymworks, LLC + DESIGNER: JPK + SCRIPTS_DIR: kibot/scripts + FABRICATION_DIR: mfg/fab + ASSEMBLY_DIR: mfg/assembly + + # Generate ERC Report + - file: kibot_pre_erc_report.yaml + definitions: + DIR: reports + + # Generate DRC Report + - file: kibot_pre_drc_report.yaml + definitions: + CHECK_ZONE_FILLS: false + DIR: reports + + # Draw stackup table in PCB. Needs gerber output + - file: kibot_pre_draw_stackup.yaml + definitions: + GERBER_OUTPUT: gbr_gerbers + NOTE: external layer thicknesses are specified after plating + + # Include tables for PCB and Assembly Drawings + - file: kibot_pre_include_table.yaml + definitions: + NAME_TP_TOP: csv_testpoints_top + NAME_TP_BOTTOM: csv_testpoints_bottom + NAME_COMP_COUNT: csv_comp_count + NAME_CSV_DRILL_TABLE: csv_drill_table + NAME_IMPEDANCE_TABLE: csv_impedance_table + + # Generated Outputs ======================================================== + + # Schematic Netlist -------------------------------------------------------- + - file: kibot_out_netlist.yaml + definitions: + NAME: netlist + COMMENT: Schematic netlist in KiCad format + + # Drawings in PDF format --------------------------------------------------- + - file: kibot_out_pdf_schematic.yaml + definitions: + NAME: pdf_schematic + COMMENT: Schematic in PDF format + COLOR_THEME: Altium_Theme + DIR: schematic + DEFAULT_FONT: 'Arial Narrow' + SHEET_WKS: templates/Asymworks_SCH.kicad_wks + + # Bills of Materials (BOMs) ------------------------------------------------ + - file: kibot_out_csv_bom.yaml + definitions: + NAME: csv_bom + COMMENT: Bill of Materials in CSV format + DIR: mfg/assembly + IPN_FIELD: Asymworks IPN + MPN_FIELD: Manufacturer PN + MAN_FIELD: Manufacturer + + - file: kibot_out_html_bom.yaml + definitions: + NAME: html_bom + COMMENT: Bill of Materials in HTML format + DIR: mfg/assembly + IPN_FIELD: Asymworks IPN + MPN_FIELD: Manufacturer PN + MAN_FIELD: Manufacturer + + - file: kibot_out_html_ibom.yaml + definitions: + NAME: html_bom_interactive + COMMENT: Bill of Materials in HTML format + DIR: mfg/assembly + IPN_FIELD: Asymworks IPN + MPN_FIELD: Manufacturer PN + MAN_FIELD: Manufacturer + + # Generate Webpage with Diff's --------------------------------------------- + - file: kibot_out_html_kiri.yaml + definitions: + NAME: html_kiri + COMMENT: KiRI webpage + DIR: kiri + + # Generate HTML Navigation of Outputs -------------------------------------- + - file: kibot_out_navigate_results.yaml + definitions: + NAME: html_navigate_results + COMMENT: Results webpage in HTML format + DIR: html + TITLE: 'A99-9000 (Assembly Name)' + # LOGO: @LOGO@ + # LOGO_URL: /jkrauss/Test_4 + + # PCB 2D Renders (Bare Board) ------------------------------------------ + - file: kibot_out_pcbdraw.yaml + definitions: + NAME: pcbdraw_top + COMMENT: PCB 2D Render (Top) + DIR: renders + FORMAT: svg + BOTTOM: false + COMPONENTS: none + + - file: kibot_out_pcbdraw.yaml + definitions: + NAME: pcbdraw_bottom + COMMENT: PCB 2D Render (Bottom) + DIR: renders + FORMAT: svg + BOTTOM: true + COMPONENTS: none + + # PCBA 3D Renders (Populated Board; KiCad Viewer) -------------------------- + - file: kibot_out_png_3d_viewer.yaml + definitions: + NAME: png_3d_viewer_top + COMMENT: Top 3D viewer PCB render in PNG format + DIR: renders + SUFFIX: top + VIEW: top + KEY_COLOR: '#FF00FF' + RAYTRACING: false + + - file: kibot_out_png_3d_viewer.yaml + definitions: + NAME: png_3d_viewer_bottom + COMMENT: Bottom 3D viewer PCB render in PNG format + DIR: renders + SUFFIX: bottom + VIEW: bottom + KEY_COLOR: '#FF00FF' + RAYTRACING: false + + - file: kibot_out_png_3d_viewer.yaml + definitions: + NAME: png_3d_viewer_angled_top + COMMENT: Top (angled) 3D viewer PCB render in PNG format + DIR: renders + SUFFIX: angled_top + VIEW: top + ROTATE_X: 2 + ROTATE_Y: -1 + ROTATE_Z: 1 + ZOOM: -1 + KEY_COLOR: '#FF00FF' + RAYTRACING: false + + - file: kibot_out_png_3d_viewer.yaml + definitions: + NAME: png_3d_viewer_angled_bottom + COMMENT: Bottom (angled) 3D viewer PCB render in PNG format + DIR: renders + SUFFIX: angled_bottom + VIEW: bottom + ROTATE_X: 2 + ROTATE_Y: -1 + ROTATE_Z: -1 + ZOOM: -1 + KEY_COLOR: '#FF00FF' + RAYTRACING: false + + # PCBA 3D Renders (Populated Board; Blender) ------------------------------- + - file: kibot_out_blender.yaml + definitions: + NAME: blender_3d_top + COMMENT: High Quality 3D Render (Top) + DIR: renders + VIEW: top + ROTATE_X: 0 + ROTATE_Y: 0 + ROTATE_Z: 0 + SAMPLES: 20 + RESOLUTION_X: 1500 + RESOLUTION_Y: 1500 + TEXTURE_DPI: 1031.0 + DNF_FILTER: _kibom_dnf_Config + DIFFUSE_RADIUS: 6.0 + DIFFUSE_HEIGHT: 10.0 + DIFFUSE_LIGHT: 0.7 + ACCENT_LIGHT: 0.1 + SPOT_LIGHT: 0.1 + + - file: kibot_out_blender.yaml + definitions: + NAME: blender_3d_bottom + COMMENT: High Quality 3D Render (Bottom) + DIR: renders + VIEW: bottom + ROTATE_X: 0 + ROTATE_Y: 0 + ROTATE_Z: 0 + SAMPLES: 20 + RESOLUTION_X: 1500 + RESOLUTION_Y: 1500 + TEXTURE_DPI: 1031.0 + DNF_FILTER: _kibom_dnf_Config + DIFFUSE_RADIUS: 6.0 + DIFFUSE_HEIGHT: 10.0 + DIFFUSE_LIGHT: 0.7 + ACCENT_LIGHT: 0.1 + SPOT_LIGHT: 0.1 + + - file: kibot_out_blender.yaml + definitions: + NAME: blender_3d_angled_top + COMMENT: High Quality 3D Render (Angled Top) + DIR: renders + VIEW: top + ROTATE_X: 30 + ROTATE_Y: 10 + ROTATE_Z: 10 + SAMPLES: 20 + RESOLUTION_X: 1500 + RESOLUTION_Y: 1500 + TEXTURE_DPI: 1031.0 + DNF_FILTER: _kibom_dnf_Config + DIFFUSE_RADIUS: 6.0 + DIFFUSE_HEIGHT: 10.0 + DIFFUSE_LIGHT: 0.4 + ACCENT_LIGHT: 0.1 + SPOT_LIGHT: 2.0 + + - file: kibot_out_blender.yaml + definitions: + NAME: blender_3d_angled_bottom + COMMENT: High Quality 3D Render (Angled Bottom) + DIR: renders + VIEW: bottom + ROTATE_X: -30 + ROTATE_Y: 10 + ROTATE_Z: 10 + SAMPLES: 20 + RESOLUTION_X: 1500 + RESOLUTION_Y: 1500 + TEXTURE_DPI: 1031.0 + DNF_FILTER: _kibom_dnf_Config + DIFFUSE_RADIUS: 6.0 + DIFFUSE_HEIGHT: 10.0 + DIFFUSE_LIGHT: 0.4 + ACCENT_LIGHT: 0.1 + SPOT_LIGHT: 2.0 + + # STEP File ---------------------------------------------------------------- + - file: kibot_out_3d_model.yaml + definitions: + NAME: step + COMMENT: PCB 3D model in STEP format + FORMAT: step + DIR: models + INCLUDE_SILKSCREEN: false + INCLUDE_SOLDERMASK: false + INCLUDE_TRACKS: false + + - file: kibot_out_3d_model.yaml + definitions: + NAME: glb + COMMENT: PCB 3D model in GLB/gITF format + FORMAT: glb + DIR: models + INCLUDE_SILKSCREEN: true + INCLUDE_SOLDERMASK: false + INCLUDE_TRACKS: false + + # Fabrication Files (Non-Vendor Specific) ---------------------------------- + - file: kibot_out_gerber.yaml + definitions: + NAME: gbr_gerbers + COMMENT: Gerbers in GBR format + DIR: mfg/fab/gerbers + PLOT_REFS: true + PROTEL_EXTENSIONS: false + SUBTRACT_MASK: false + + # Excellon Drill + - file: kibot_out_excellon_drill.yaml + definitions: + NAME: drl_excellon + COMMENT: Drill in Excellon format + DIR: mfg/fab/gerbers + METRIC_UNITS: true + + # ODB++ + - file: kibot_out_odb.yaml + definitions: + NAME: zip_odb + COMMENT: ODB++ in ZIP format + DIR: mfg/fab + + # PDF Drill Map + - file: kibot_out_excellon_drill.yaml + definitions: + NAME: pdf_drill_map + COMMENT: Drill Map in PDF format + DIR: mfg/fab/gerbers + METRIC_UNITS: true + GENERATE_DRILL: false + PTH_NPTH: false + MAP_FORMAT: pdf + + # CSV Drill Table + - file: kibot_out_csv_drill_table.yaml + definitions: + NAME: csv_drill_table + COMMENT: Drill Table in CSV format + DIR: mfg/fab/drill-tables + PTH_NPTH: 'no' + GROUP_ROUND_SLOTS: true + + # CSV Component Placement File + - file: kibot_out_csv_position.yaml + definitions: + NAME: csv_position + COMMENT: Position file in CSV format + DIR: mfg/assembly + + # CSV Test Point Files + - file: kibot_out_csv_testpoints.yaml + definitions: + NAME: csv_testpoints + COMMENT: Testpoint report in CSV format + DIR: test/testpoints + EXCLUDE_FILTER: only_testpoints + + - file: kibot_out_csv_testpoints_simple.yaml + definitions: + NAME: csv_testpoints_top + COMMENT: Top testpoint report in CSV format + DIR: test/testpoints + SUFFIX: -top + EXCLUDE_FILTER: only_testpoints_top + + - file: kibot_out_csv_testpoints_simple.yaml + definitions: + NAME: csv_testpoints_bottom + COMMENT: Bottom testpoint report in CSV format + DIR: test/testpoints + SUFFIX: -bottom + EXCLUDE_FILTER: only_testpoints_bottom + + # Fabrication and Assembly Drawings + - file: kibot_out_pdf_fabrication.yaml + definitions: + NAME: pdf_fabrication + COMMENT: Fabrication document in PDF format + DIR: mfg/fab + COLOR_THEME: Altium_Theme + SHEET_WKS: templates/Asymworks_PCB.kicad_wks + SCALING: 1 + PTH_NPTH: 'no' + GROUP_ROUND_SLOTS: true + FAB_EXCLUDE_FILTER: only_testpoints + LAYER_DRILL_MAP: DrillMap + LAYER_TP_LIST_TOP: F.TestPointList + LAYER_TP_LIST_BOTTOM: B.TestPointList + NAME_TP_TOP: csv_testpoints_top + NAME_TP_BOTTOM: csv_testpoints_bottom + NAME_IMPEDANCE_TABLE: csv_impedance_table + NAME_DRILL_TABLE: csv_drill_table + + - file: kibot_out_pdf_assembly.yaml + definitions: + NAME: pdf_assembly + COMMENT: Assembly document in PDF format + DIR: mfg/assembly + COLOR_THEME: Altium_Theme + SHEET_WKS: templates/Asymworks_PCBA.kicad_wks + SCALING: 1 + FAB_EXCLUDE_FILTER: exclude_testpoints + LAYER_TITLE_PAGE: AssyTitlePage + LAYER_ASSEMBLY_TEXT_TOP: F.AssemblyText + LAYER_ASSEMBLY_TEXT_BOTTOM: B.AssemblyText + LAYER_DNP_CROSS_TOP: F.DNP + LAYER_DNP_CROSS_BOTTOM: B.DNP + NAME_COMP_COUNT: csv_comp_count + + # Zip File of Fabrication Data + - file: kibot_out_compress_fab.yaml + definitions: + NAME: zip_compress_fab + COMMENT: Generates a ZIP file with gerbers, drill and fabrication document + DIR: mfg/fab + GERBER_OUTPUT: gbr_gerbers + DRILL_MAP_OUTPUT: pdf_drill_map + DRILL_OUTPUT: drl_excellon + FABRICATION_OUTPUT: pdf_fabrication + + # Fabrication and Assembly Files (JLCPCB) ---------------------------------- + - file: kibot_out_gerber.yaml + definitions: + NAME: jlcpcb_gerbers + COMMENT: Gerbers in GBR format for JLCPCB + DIR: mfg/jlcpcb/gerbers + PLOT_REFS: true + PROTEL_EXTENSIONS: true + SUBTRACT_MASK: false + + - file: kibot_out_jlcpcb_fabpack.yaml + definitions: + NAME: jlcpcb_fabpack + COMMENT: Zipped Fabpack for JLCPCB + DIR: mfg/jlcpcb + GERBER_OUTPUT: jlcpcb_gerbers + DRILL_OUTPUT: drl_excellon + + - file: kibot_out_jlcpcb_bom.yaml + definitions: + NAME: jlcpcb_bom + COMMENT: Bill of Materials for JLCPCB + DIR: mfg/jlcpcb + EXCLUDE_FILTER: only_lcsc_parts + + - file: kibot_out_jlcpcb_cpl.yaml + definitions: + NAME: jlcpcb_cpl + COMMENT: Component Placement File for JLCPCB + DIR: mfg/jlcpcb + EXCLUDE_FILTER: only_lcsc_parts + + # Notes and Reports -------------------------------------------------------- + - file: kibot_out_csv_report.yaml + definitions: + NAME: csv_comp_count + COMMENT: Component report (count) in CSV format + DIR: mfg/assembly + OUTPUT_ID: components_count + TEMPLATE: total_components + + - file: kibot_out_csv_report.yaml + definitions: + NAME: csv_impedance_table + COMMENT: Impedance table in CSV format + DIR: mfg/fab + OUTPUT_ID: impedance_table + TEMPLATE: notes/impedance_table.txt + + - file: kibot_out_txt_report.yaml + definitions: + NAME: txt_schematic_notes + COMMENT: Schematic notes in TXT format + DIR: schematic + OUTPUT_ID: schematic_notes + TEMPLATE: notes/schematic_notes.txt + + - file: kibot_out_txt_report.yaml + definitions: + NAME: txt_fabrication_notes + COMMENT: Fabrication notes in TXT format + DIR: mfg/fab + OUTPUT_ID: fabrication_notes + TEMPLATE: notes/fabrication_notes.txt + + - file: kibot_out_txt_report.yaml + definitions: + NAME: txt_assembly_notes + COMMENT: Assembly notes in TXT format + DIR: mfg/assembly + OUTPUT_ID: assembly_notes + TEMPLATE: notes/assembly_notes.txt + + # Panelization Outputs ----------------------------------------------------- + - file: kibot_out_panelize.yaml + definitions: + NAME: panel_801 + DIR: 'panels/panel-800' + CONFIG: 'panels/panel-800.json' + TITLE: 'Panel Fabrication (Panel -800)' + +# ============================================================================ +# Definitions + + (kibot - config_reader.py:683) +DEBUG:Parsing imports: [{'file': 'kibot_globals.yaml', 'definitions': {'OUTPUT_DIR': './', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOT': 'B.DNP'}}, {'file': 'kibot_filt_field_rename.yaml', 'definitions': {'NAME': 'field_rename', 'COMMENT': 'Rename fields', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer'}}, {'file': 'kibot_filt_testpoints.yaml', 'definitions': {'NAME': 'only_testpoints', 'COMMENT': 'Include only testpoints'}}, {'file': 'kibot_filt_exclude_testpoints.yaml', 'definitions': {'NAME': 'exclude_testpoints', 'COMMENT': 'Exclude only testpoints'}}, {'file': 'kibot_filt_testpoints.yaml', 'definitions': {'NAME': 'only_testpoints_top', 'COMMENT': 'Select only top testpoints', 'EXCLUDE_BOTTOM': True, 'EXCLUDE_REFS': '[MB*]'}}, {'file': 'kibot_filt_testpoints.yaml', 'definitions': {'NAME': 'only_testpoints_bottom', 'COMMENT': 'Select only bottom testpoints', 'EXCLUDE_TOP': True, 'EXCLUDE_REFS': '[MB*]'}}, {'file': 'kibot_filt_lcsc_parts.yaml', 'definitions': {'NAME': 'only_lcsc_parts', 'COMMENT': 'Only parts with LCSC Part Number'}}, {'file': 'kibot_pre_set_text_variables.yaml', 'definitions': {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'SCRIPTS_DIR': 'kibot/scripts', 'FABRICATION_DIR': 'mfg/fab', 'ASSEMBLY_DIR': 'mfg/assembly'}}, {'file': 'kibot_pre_erc_report.yaml', 'definitions': {'DIR': 'reports'}}, {'file': 'kibot_pre_drc_report.yaml', 'definitions': {'CHECK_ZONE_FILLS': False, 'DIR': 'reports'}}, {'file': 'kibot_pre_draw_stackup.yaml', 'definitions': {'GERBER_OUTPUT': 'gbr_gerbers', 'NOTE': 'external layer thicknesses are specified after plating'}}, {'file': 'kibot_pre_include_table.yaml', 'definitions': {'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_COMP_COUNT': 'csv_comp_count', 'NAME_CSV_DRILL_TABLE': 'csv_drill_table', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table'}}, {'file': 'kibot_out_netlist.yaml', 'definitions': {'NAME': 'netlist', 'COMMENT': 'Schematic netlist in KiCad format'}}, {'file': 'kibot_out_pdf_schematic.yaml', 'definitions': {'NAME': 'pdf_schematic', 'COMMENT': 'Schematic in PDF format', 'COLOR_THEME': 'Altium_Theme', 'DIR': 'schematic', 'DEFAULT_FONT': 'Arial Narrow', 'SHEET_WKS': 'templates/Asymworks_SCH.kicad_wks'}}, {'file': 'kibot_out_csv_bom.yaml', 'definitions': {'NAME': 'csv_bom', 'COMMENT': 'Bill of Materials in CSV format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer'}}, {'file': 'kibot_out_html_bom.yaml', 'definitions': {'NAME': 'html_bom', 'COMMENT': 'Bill of Materials in HTML format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer'}}, {'file': 'kibot_out_html_ibom.yaml', 'definitions': {'NAME': 'html_bom_interactive', 'COMMENT': 'Bill of Materials in HTML format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer'}}, {'file': 'kibot_out_html_kiri.yaml', 'definitions': {'NAME': 'html_kiri', 'COMMENT': 'KiRI webpage', 'DIR': 'kiri'}}, {'file': 'kibot_out_navigate_results.yaml', 'definitions': {'NAME': 'html_navigate_results', 'COMMENT': 'Results webpage in HTML format', 'DIR': 'html', 'TITLE': 'A99-9000 (Assembly Name)'}}, {'file': 'kibot_out_pcbdraw.yaml', 'definitions': {'NAME': 'pcbdraw_top', 'COMMENT': 'PCB 2D Render (Top)', 'DIR': 'renders', 'FORMAT': 'svg', 'BOTTOM': False, 'COMPONENTS': 'none'}}, {'file': 'kibot_out_pcbdraw.yaml', 'definitions': {'NAME': 'pcbdraw_bottom', 'COMMENT': 'PCB 2D Render (Bottom)', 'DIR': 'renders', 'FORMAT': 'svg', 'BOTTOM': True, 'COMPONENTS': 'none'}}, {'file': 'kibot_out_png_3d_viewer.yaml', 'definitions': {'NAME': 'png_3d_viewer_top', 'COMMENT': 'Top 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'top', 'VIEW': 'top', 'KEY_COLOR': '#FF00FF', 'RAYTRACING': False}}, {'file': 'kibot_out_png_3d_viewer.yaml', 'definitions': {'NAME': 'png_3d_viewer_bottom', 'COMMENT': 'Bottom 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'bottom', 'VIEW': 'bottom', 'KEY_COLOR': '#FF00FF', 'RAYTRACING': False}}, {'file': 'kibot_out_png_3d_viewer.yaml', 'definitions': {'NAME': 'png_3d_viewer_angled_top', 'COMMENT': 'Top (angled) 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'angled_top', 'VIEW': 'top', 'ROTATE_X': 2, 'ROTATE_Y': -1, 'ROTATE_Z': 1, 'ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'RAYTRACING': False}}, {'file': 'kibot_out_png_3d_viewer.yaml', 'definitions': {'NAME': 'png_3d_viewer_angled_bottom', 'COMMENT': 'Bottom (angled) 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'angled_bottom', 'VIEW': 'bottom', 'ROTATE_X': 2, 'ROTATE_Y': -1, 'ROTATE_Z': -1, 'ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'RAYTRACING': False}}, {'file': 'kibot_out_blender.yaml', 'definitions': {'NAME': 'blender_3d_top', 'COMMENT': 'High Quality 3D Render (Top)', 'DIR': 'renders', 'VIEW': 'top', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'SAMPLES': 20, 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'DNF_FILTER': '_kibom_dnf_Config', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.7, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 0.1}}, {'file': 'kibot_out_blender.yaml', 'definitions': {'NAME': 'blender_3d_bottom', 'COMMENT': 'High Quality 3D Render (Bottom)', 'DIR': 'renders', 'VIEW': 'bottom', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'SAMPLES': 20, 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'DNF_FILTER': '_kibom_dnf_Config', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.7, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 0.1}}, {'file': 'kibot_out_blender.yaml', 'definitions': {'NAME': 'blender_3d_angled_top', 'COMMENT': 'High Quality 3D Render (Angled Top)', 'DIR': 'renders', 'VIEW': 'top', 'ROTATE_X': 30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'SAMPLES': 20, 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'DNF_FILTER': '_kibom_dnf_Config', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0}}, {'file': 'kibot_out_blender.yaml', 'definitions': {'NAME': 'blender_3d_angled_bottom', 'COMMENT': 'High Quality 3D Render (Angled Bottom)', 'DIR': 'renders', 'VIEW': 'bottom', 'ROTATE_X': -30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'SAMPLES': 20, 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'DNF_FILTER': '_kibom_dnf_Config', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0}}, {'file': 'kibot_out_3d_model.yaml', 'definitions': {'NAME': 'step', 'COMMENT': 'PCB 3D model in STEP format', 'FORMAT': 'step', 'DIR': 'models', 'INCLUDE_SILKSCREEN': False, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False}}, {'file': 'kibot_out_3d_model.yaml', 'definitions': {'NAME': 'glb', 'COMMENT': 'PCB 3D model in GLB/gITF format', 'FORMAT': 'glb', 'DIR': 'models', 'INCLUDE_SILKSCREEN': True, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False}}, {'file': 'kibot_out_gerber.yaml', 'definitions': {'NAME': 'gbr_gerbers', 'COMMENT': 'Gerbers in GBR format', 'DIR': 'mfg/fab/gerbers', 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False}}, {'file': 'kibot_out_excellon_drill.yaml', 'definitions': {'NAME': 'drl_excellon', 'COMMENT': 'Drill in Excellon format', 'DIR': 'mfg/fab/gerbers', 'METRIC_UNITS': True}}, {'file': 'kibot_out_odb.yaml', 'definitions': {'NAME': 'zip_odb', 'COMMENT': 'ODB++ in ZIP format', 'DIR': 'mfg/fab'}}, {'file': 'kibot_out_excellon_drill.yaml', 'definitions': {'NAME': 'pdf_drill_map', 'COMMENT': 'Drill Map in PDF format', 'DIR': 'mfg/fab/gerbers', 'METRIC_UNITS': True, 'GENERATE_DRILL': False, 'PTH_NPTH': False, 'MAP_FORMAT': 'pdf'}}, {'file': 'kibot_out_csv_drill_table.yaml', 'definitions': {'NAME': 'csv_drill_table', 'COMMENT': 'Drill Table in CSV format', 'DIR': 'mfg/fab/drill-tables', 'PTH_NPTH': 'no', 'GROUP_ROUND_SLOTS': True}}, {'file': 'kibot_out_csv_position.yaml', 'definitions': {'NAME': 'csv_position', 'COMMENT': 'Position file in CSV format', 'DIR': 'mfg/assembly'}}, {'file': 'kibot_out_csv_testpoints.yaml', 'definitions': {'NAME': 'csv_testpoints', 'COMMENT': 'Testpoint report in CSV format', 'DIR': 'test/testpoints', 'EXCLUDE_FILTER': 'only_testpoints'}}, {'file': 'kibot_out_csv_testpoints_simple.yaml', 'definitions': {'NAME': 'csv_testpoints_top', 'COMMENT': 'Top testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '-top', 'EXCLUDE_FILTER': 'only_testpoints_top'}}, {'file': 'kibot_out_csv_testpoints_simple.yaml', 'definitions': {'NAME': 'csv_testpoints_bottom', 'COMMENT': 'Bottom testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '-bottom', 'EXCLUDE_FILTER': 'only_testpoints_bottom'}}, {'file': 'kibot_out_pdf_fabrication.yaml', 'definitions': {'NAME': 'pdf_fabrication', 'COMMENT': 'Fabrication document in PDF format', 'DIR': 'mfg/fab', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS': 'templates/Asymworks_PCB.kicad_wks', 'SCALING': 1, 'PTH_NPTH': 'no', 'GROUP_ROUND_SLOTS': True, 'FAB_EXCLUDE_FILTER': 'only_testpoints', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table', 'NAME_DRILL_TABLE': 'csv_drill_table'}}, {'file': 'kibot_out_pdf_assembly.yaml', 'definitions': {'NAME': 'pdf_assembly', 'COMMENT': 'Assembly document in PDF format', 'DIR': 'mfg/assembly', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS': 'templates/Asymworks_PCBA.kicad_wks', 'SCALING': 1, 'FAB_EXCLUDE_FILTER': 'exclude_testpoints', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'NAME_COMP_COUNT': 'csv_comp_count'}}, {'file': 'kibot_out_compress_fab.yaml', 'definitions': {'NAME': 'zip_compress_fab', 'COMMENT': 'Generates a ZIP file with gerbers, drill and fabrication document', 'DIR': 'mfg/fab', 'GERBER_OUTPUT': 'gbr_gerbers', 'DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DRILL_OUTPUT': 'drl_excellon', 'FABRICATION_OUTPUT': 'pdf_fabrication'}}, {'file': 'kibot_out_gerber.yaml', 'definitions': {'NAME': 'jlcpcb_gerbers', 'COMMENT': 'Gerbers in GBR format for JLCPCB', 'DIR': 'mfg/jlcpcb/gerbers', 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': True, 'SUBTRACT_MASK': False}}, {'file': 'kibot_out_jlcpcb_fabpack.yaml', 'definitions': {'NAME': 'jlcpcb_fabpack', 'COMMENT': 'Zipped Fabpack for JLCPCB', 'DIR': 'mfg/jlcpcb', 'GERBER_OUTPUT': 'jlcpcb_gerbers', 'DRILL_OUTPUT': 'drl_excellon'}}, {'file': 'kibot_out_jlcpcb_bom.yaml', 'definitions': {'NAME': 'jlcpcb_bom', 'COMMENT': 'Bill of Materials for JLCPCB', 'DIR': 'mfg/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts'}}, {'file': 'kibot_out_jlcpcb_cpl.yaml', 'definitions': {'NAME': 'jlcpcb_cpl', 'COMMENT': 'Component Placement File for JLCPCB', 'DIR': 'mfg/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts'}}, {'file': 'kibot_out_csv_report.yaml', 'definitions': {'NAME': 'csv_comp_count', 'COMMENT': 'Component report (count) in CSV format', 'DIR': 'mfg/assembly', 'OUTPUT_ID': 'components_count', 'TEMPLATE': 'total_components'}}, {'file': 'kibot_out_csv_report.yaml', 'definitions': {'NAME': 'csv_impedance_table', 'COMMENT': 'Impedance table in CSV format', 'DIR': 'mfg/fab', 'OUTPUT_ID': 'impedance_table', 'TEMPLATE': 'notes/impedance_table.txt'}}, {'file': 'kibot_out_txt_report.yaml', 'definitions': {'NAME': 'txt_schematic_notes', 'COMMENT': 'Schematic notes in TXT format', 'DIR': 'schematic', 'OUTPUT_ID': 'schematic_notes', 'TEMPLATE': 'notes/schematic_notes.txt'}}, {'file': 'kibot_out_txt_report.yaml', 'definitions': {'NAME': 'txt_fabrication_notes', 'COMMENT': 'Fabrication notes in TXT format', 'DIR': 'mfg/fab', 'OUTPUT_ID': 'fabrication_notes', 'TEMPLATE': 'notes/fabrication_notes.txt'}}, {'file': 'kibot_out_txt_report.yaml', 'definitions': {'NAME': 'txt_assembly_notes', 'COMMENT': 'Assembly notes in TXT format', 'DIR': 'mfg/assembly', 'OUTPUT_ID': 'assembly_notes', 'TEMPLATE': 'notes/assembly_notes.txt'}}, {'file': 'kibot_out_panelize.yaml', 'definitions': {'NAME': 'panel_801', 'DIR': 'panels/panel-800', 'CONFIG': 'panels/panel-800.json', 'TITLE': 'Panel Fabrication (Panel -800)'}}] (kibot - config_reader.py:520) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'OUTPUT_DIR': './', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'LAYER_DNP_BOT': 'B.DNP'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'OUTPUT_DIR': './', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'LAYER_DNP_BOT': 'B.DNP'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'OUTPUT_DIR': './', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'LAYER_DNP_BOT': 'B.DNP'} (kibot - config_reader.py:677) +DEBUG:- Replacing @OUTPUT_DIR@ -> ./ () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_DNP_TOP@ -> F.DNP () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_DNP_BOTTOM@ -> B.DNP () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'OUTPUT_DIR': './', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'LAYER_DNP_BOT': 'B.DNP'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot Globals +# https://kibot.readthedocs.io/en/latest/configuration/global.html + +kibot: + version: 1 + +global: + resources_dir: 'kibot' + out_dir: './' + dnp_cross_top_layer: 'F.DNP' + dnp_cross_bottom_layer: 'B.DNP' + disable_kicad_cross_on_fab: true + extra_pth_drill: 0 # for annular ring computation. + filters: [] + + (kibot - config_reader.py:683) +DEBUG:Globals loaded from `kibot/yaml/kibot_globals.yaml`: dict_keys(['resources_dir', 'out_dir', 'dnp_cross_top_layer', 'dnp_cross_bottom_layer', 'disable_kicad_cross_on_fab', 'extra_pth_drill', 'filters']) (kibot - config_reader.py:480) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'COMMENT': 'Rename fields', 'NAME': 'field_rename', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'field_rename', 'COMMENT': 'Rename fields'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'COMMENT': 'Rename fields', 'NAME': 'field_rename', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Rename fields', 'NAME': 'field_rename', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @COMMENT@ -> Rename fields () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME@ -> field_rename () (kibot - config_reader.py:78) +DEBUG:- Replacing @MPN_FIELD@ -> Manufacturer PN () (kibot - config_reader.py:78) +DEBUG:- Replacing @MAN_FIELD@ -> Manufacturer () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Rename fields', 'NAME': 'field_rename', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot Filter for renaming Manufacturer Part Number field + +kibot: + version: 1 + +filters: + - name: 'field_rename' + comment: 'Rename fields' + type: field_rename + rename: + - field: 'Manufacturer PN' + name: manf# + - field: 'Manufacturer' + name: manf + + (kibot - config_reader.py:683) +DEBUG:Parsing filter `field_rename` (field_rename) (kibot - config_reader.py:252) +DEBUG:Filters loaded from `kibot/yaml/kibot_filt_field_rename.yaml`: dict_keys(['field_rename']) (kibot - config_reader.py:408) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'COMMENT': 'Select only testpoints', 'NAME': 'only_testpoints', 'EXCLUDE_TOP': False, 'EXCLUDE_BOTTOM': False, 'EXCLUDE_REFS': '[MB*]'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'only_testpoints', 'COMMENT': 'Include only testpoints'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'COMMENT': 'Include only testpoints', 'NAME': 'only_testpoints', 'EXCLUDE_TOP': False, 'EXCLUDE_BOTTOM': False, 'EXCLUDE_REFS': '[MB*]', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Include only testpoints', 'NAME': 'only_testpoints', 'EXCLUDE_TOP': False, 'EXCLUDE_BOTTOM': False, 'EXCLUDE_REFS': '[MB*]', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @COMMENT@ -> Include only testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME@ -> only_testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_TOP@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_BOTTOM@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_REFS@ -> [MB*] () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Include only testpoints', 'NAME': 'only_testpoints', 'EXCLUDE_TOP': False, 'EXCLUDE_BOTTOM': False, 'EXCLUDE_REFS': '[MB*]', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot Filter for testpoints +# These filters are used for multiple outputs to highlight testpoints +# or generate testpoint lists for top and bottom layers + +kibot: + version: 1 + +filters: + - name: 'only_testpoints' + comment: 'Include only testpoints' + type: generic + exclude_top: false + exclude_bottom: false + include_only: + - column: Reference + regex: "TP" + exclude_refs: [MB*] + + (kibot - config_reader.py:683) +DEBUG:Parsing filter `only_testpoints` (generic) (kibot - config_reader.py:252) +DEBUG:Configuring from default: exclude_any -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: keys -> ['dnf_list'] (kibot - optionable.py:362) +DEBUG:Filters loaded from `kibot/yaml/kibot_filt_testpoints.yaml`: dict_keys(['only_testpoints']) (kibot - config_reader.py:408) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'COMMENT': 'Exclude only testpoints', 'NAME': 'exclude_testpoints'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'exclude_testpoints', 'COMMENT': 'Exclude only testpoints'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'COMMENT': 'Exclude only testpoints', 'NAME': 'exclude_testpoints', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Exclude only testpoints', 'NAME': 'exclude_testpoints', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @COMMENT@ -> Exclude only testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME@ -> exclude_testpoints () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Exclude only testpoints', 'NAME': 'exclude_testpoints', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot Filter for excluding testpoints + +kibot: + version: 1 + +filters: + - name: 'exclude_testpoints' + comment: 'Exclude only testpoints' + type: generic + exclude_any: + - column: Reference + regex: "TP" + + (kibot - config_reader.py:683) +DEBUG:Parsing filter `exclude_testpoints` (generic) (kibot - config_reader.py:252) +DEBUG:Configuring from default: include_only -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: keys -> ['dnf_list'] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_refs -> [] (kibot - optionable.py:362) +DEBUG:Filters loaded from `kibot/yaml/kibot_filt_exclude_testpoints.yaml`: dict_keys(['exclude_testpoints']) (kibot - config_reader.py:408) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'COMMENT': 'Select only testpoints', 'NAME': 'only_testpoints', 'EXCLUDE_TOP': False, 'EXCLUDE_BOTTOM': False, 'EXCLUDE_REFS': '[MB*]'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'only_testpoints_top', 'COMMENT': 'Select only top testpoints', 'EXCLUDE_BOTTOM': True, 'EXCLUDE_REFS': '[MB*]'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'COMMENT': 'Select only top testpoints', 'NAME': 'only_testpoints_top', 'EXCLUDE_TOP': False, 'EXCLUDE_BOTTOM': True, 'EXCLUDE_REFS': '[MB*]', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Select only top testpoints', 'NAME': 'only_testpoints_top', 'EXCLUDE_TOP': False, 'EXCLUDE_BOTTOM': True, 'EXCLUDE_REFS': '[MB*]', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @COMMENT@ -> Select only top testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME@ -> only_testpoints_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_TOP@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_BOTTOM@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_REFS@ -> [MB*] () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Select only top testpoints', 'NAME': 'only_testpoints_top', 'EXCLUDE_TOP': False, 'EXCLUDE_BOTTOM': True, 'EXCLUDE_REFS': '[MB*]', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot Filter for testpoints +# These filters are used for multiple outputs to highlight testpoints +# or generate testpoint lists for top and bottom layers + +kibot: + version: 1 + +filters: + - name: 'only_testpoints_top' + comment: 'Select only top testpoints' + type: generic + exclude_top: false + exclude_bottom: true + include_only: + - column: Reference + regex: "TP" + exclude_refs: [MB*] + + (kibot - config_reader.py:683) +DEBUG:Parsing filter `only_testpoints_top` (generic) (kibot - config_reader.py:252) +DEBUG:Configuring from default: exclude_any -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: keys -> ['dnf_list'] (kibot - optionable.py:362) +DEBUG:Filters loaded from `kibot/yaml/kibot_filt_testpoints.yaml`: dict_keys(['only_testpoints_top']) (kibot - config_reader.py:408) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'COMMENT': 'Select only testpoints', 'NAME': 'only_testpoints', 'EXCLUDE_TOP': False, 'EXCLUDE_BOTTOM': False, 'EXCLUDE_REFS': '[MB*]'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'only_testpoints_bottom', 'COMMENT': 'Select only bottom testpoints', 'EXCLUDE_TOP': True, 'EXCLUDE_REFS': '[MB*]'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'COMMENT': 'Select only bottom testpoints', 'NAME': 'only_testpoints_bottom', 'EXCLUDE_TOP': True, 'EXCLUDE_BOTTOM': False, 'EXCLUDE_REFS': '[MB*]', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Select only bottom testpoints', 'NAME': 'only_testpoints_bottom', 'EXCLUDE_TOP': True, 'EXCLUDE_BOTTOM': False, 'EXCLUDE_REFS': '[MB*]', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @COMMENT@ -> Select only bottom testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME@ -> only_testpoints_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_TOP@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_BOTTOM@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_REFS@ -> [MB*] () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Select only bottom testpoints', 'NAME': 'only_testpoints_bottom', 'EXCLUDE_TOP': True, 'EXCLUDE_BOTTOM': False, 'EXCLUDE_REFS': '[MB*]', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot Filter for testpoints +# These filters are used for multiple outputs to highlight testpoints +# or generate testpoint lists for top and bottom layers + +kibot: + version: 1 + +filters: + - name: 'only_testpoints_bottom' + comment: 'Select only bottom testpoints' + type: generic + exclude_top: true + exclude_bottom: false + include_only: + - column: Reference + regex: "TP" + exclude_refs: [MB*] + + (kibot - config_reader.py:683) +DEBUG:Parsing filter `only_testpoints_bottom` (generic) (kibot - config_reader.py:252) +DEBUG:Configuring from default: exclude_any -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: keys -> ['dnf_list'] (kibot - optionable.py:362) +DEBUG:Filters loaded from `kibot/yaml/kibot_filt_testpoints.yaml`: dict_keys(['only_testpoints_bottom']) (kibot - config_reader.py:408) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'COMMENT': 'Only parts with LCSC Part Number', 'NAME': 'only_lcsc_parts'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'only_lcsc_parts', 'COMMENT': 'Only parts with LCSC Part Number'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'COMMENT': 'Only parts with LCSC Part Number', 'NAME': 'only_lcsc_parts', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Only parts with LCSC Part Number', 'NAME': 'only_lcsc_parts', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @COMMENT@ -> Only parts with LCSC Part Number () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME@ -> only_lcsc_parts () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'COMMENT': 'Only parts with LCSC Part Number', 'NAME': 'only_lcsc_parts', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot Filter for components with an LCSC Part Number + +kibot: + version: 1 + +filters: + - name: only_lcsc_parts + comment: 'Only parts with LCSC Part Number' + type: generic + include_only: + - column: _field_lcsc_part + regex: '^C\d+' + + (kibot - config_reader.py:683) +DEBUG:Parsing filter `only_lcsc_parts` (generic) (kibot - config_reader.py:252) +DEBUG:Configuring from default: exclude_any -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: keys -> ['dnf_list'] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_refs -> [] (kibot - optionable.py:362) +DEBUG:Filters loaded from `kibot/yaml/kibot_filt_lcsc_parts.yaml`: dict_keys(['only_lcsc_parts']) (kibot - config_reader.py:408) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'PROJECT_CODE': '', 'ASSEMBLY_NUMBER': '', 'ASSEMBLY_NAME': '', 'ASSEMBLY_SCALING': '', 'DWG_NUMBER_SCH': '', 'DWG_TITLE_SCH': '', 'DWG_NUMBER_PCB': '', 'DWG_TITLE_PCB': '', 'DWG_TITLE_ASSY': '', 'COMPANY': '', 'DESIGNER': '', 'REVISION': '', 'RELEASE_STATE': '', 'RELEASE_DATE': '', 'GIT_URL': '', 'SHEET_NAME_VAR': 'SHEET_NAME_', 'SCRIPTS_DIR': 'kibot/scripts', 'FABRICATION_DIR': 'mfg/fab', 'ASSEMBLY_DIR': 'mfg/assembly', 'GET_SHEET_CMD': 'python3 @SCRIPTS_DIR@/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': 'mfg/assembly', 'FABRICATION_DIR': 'mfg/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': 'kibot/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'ASSEMBLY_SCALING': 1, 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'REVISION': '', 'RELEASE_STATE': '', 'RELEASE_DATE': '', 'GIT_URL': '/jkrauss/Test_4', 'SHEET_NAME_VAR': 'SHEET_NAME_', 'SCRIPTS_DIR': 'kibot/scripts', 'FABRICATION_DIR': 'mfg/fab', 'ASSEMBLY_DIR': 'mfg/assembly', 'GET_SHEET_CMD': 'python3 @SCRIPTS_DIR@/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Replacing @RELEASE_STATE@ -> DRAFT () (kibot - config_reader.py:78) +DEBUG:- Replacing @REVISION@ -> NO_TAG+ (Unreleased) () (kibot - config_reader.py:78) +DEBUG:- Applying collected definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'ASSEMBLY_SCALING': 1, 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'REVISION': '', 'RELEASE_STATE': '', 'RELEASE_DATE': '', 'GIT_URL': '/jkrauss/Test_4', 'SHEET_NAME_VAR': 'SHEET_NAME_', 'SCRIPTS_DIR': 'kibot/scripts', 'FABRICATION_DIR': 'mfg/fab', 'ASSEMBLY_DIR': 'mfg/assembly', 'GET_SHEET_CMD': 'python3 @SCRIPTS_DIR@/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @PROJECT_CODE@ -> P99 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ASSEMBLY_NUMBER@ -> A99-9000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ASSEMBLY_NAME@ -> Assembly Name () (kibot - config_reader.py:78) +DEBUG:- Replacing @ASSEMBLY_SCALING@ -> 1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DWG_NUMBER_SCH@ -> S99-9000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DWG_TITLE_SCH@ -> Schematic, Assembly Name () (kibot - config_reader.py:78) +DEBUG:- Replacing @DWG_NUMBER_PCB@ -> P99-9000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DWG_TITLE_PCB@ -> PCB, Assembly Name () (kibot - config_reader.py:78) +DEBUG:- Replacing @DWG_TITLE_ASSY@ -> PCB Assembly, Assembly Name () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMPANY@ -> Asymworks, LLC () (kibot - config_reader.py:78) +DEBUG:- Replacing @DESIGNER@ -> JPK () (kibot - config_reader.py:78) +DEBUG:- Replacing @GIT_URL@ -> /jkrauss/Test_4 () (kibot - config_reader.py:78) +DEBUG:- Replacing @SHEET_NAME_VAR@ -> SHEET_NAME_ () (kibot - config_reader.py:78) +DEBUG:- Replacing @FABRICATION_DIR@ -> mfg/fab () (kibot - config_reader.py:78) +DEBUG:- Replacing @ASSEMBLY_DIR@ -> mfg/assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @GET_SHEET_CMD@ -> python3 @SCRIPTS_DIR@/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p () (kibot - config_reader.py:78) +DEBUG:- Replacing @SCHEMATIC_DIR@ -> schematic () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'ASSEMBLY_SCALING': 1, 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'REVISION': '', 'RELEASE_STATE': '', 'RELEASE_DATE': '', 'GIT_URL': '/jkrauss/Test_4', 'SHEET_NAME_VAR': 'SHEET_NAME_', 'SCRIPTS_DIR': 'kibot/scripts', 'FABRICATION_DIR': 'mfg/fab', 'ASSEMBLY_DIR': 'mfg/assembly', 'GET_SHEET_CMD': 'python3 @SCRIPTS_DIR@/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @SCRIPTS_DIR@ -> kibot/scripts () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'ASSEMBLY_SCALING': 1, 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'REVISION': '', 'RELEASE_STATE': '', 'RELEASE_DATE': '', 'GIT_URL': '/jkrauss/Test_4', 'SHEET_NAME_VAR': 'SHEET_NAME_', 'SCRIPTS_DIR': 'kibot/scripts', 'FABRICATION_DIR': 'mfg/fab', 'ASSEMBLY_DIR': 'mfg/assembly', 'GET_SHEET_CMD': 'python3 @SCRIPTS_DIR@/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot preflight for setting Text Variables +# https://kibot.readthedocs.io/en/latest/configuration/preflights/set_text_variables.html + +kibot: + version: 1 + +preflight: + update_xml: true + set_text_variables: + + # Git-related information + - variable: 'REVISION' + text: 'NO_TAG+ (Unreleased)' + - variable: 'RELEASE_STATE' + text: 'DRAFT' + - variable: 'RELEASE_DATE' + command: 'git log -1 --format="%ad" --date=short' + - variable: 'GIT_HASH_SCH' + command: 'git log -1 --format="%h" $KIBOT_SCH_NAME' + - variable: 'GIT_HASH_PCB' + command: 'git log -1 --format="%h" $KIBOT_PCB_NAME' + - variable: 'GIT_HASH' + command: 'git log -1 --format="%h"' + - variable: 'GIT_URL' + text: '/jkrauss/Test_4' + + # Metadata + - variable: 'PROJECT_CODE' + text: 'P99' + - variable: 'ASSEMBLY_NUMBER' + text: 'A99-9000' + - variable: 'ASSEMBLY_NAME' + text: 'Assembly Name' + - variable: 'ASSEMBLY_SCALE' + text: '1' + - variable: 'DWG_NUMBER_PCB' + text: 'P99-9000' + - variable: 'DWG_NUMBER_SCH' + text: 'S99-9000' + - variable: 'DWG_TITLE_PCB' + text: 'PCB, Assembly Name' + - variable: 'DWG_TITLE_SCH' + text: 'Schematic, Assembly Name' + - variable: 'DWG_TITLE_ASSY' + text: 'PCB Assembly, Assembly Name' + - variable: 'COMPANY' + text: 'Asymworks, LLC' + - variable: 'DESIGNER' + text: 'JPK' + - variable: 'VARIANT' + text: '%V' + + # Schematic notes + - variable: 'SCHEMATIC_NOTES' + expand_in_command: true + command: '[ -f "schematic/%f-schematic_notes%v.txt" ] && cat "schematic/%f-schematic_notes%v.txt" || echo ""' + + # Fabrication notes + - variable: 'FABRICATION_NOTES' + expand_in_command: true + command: '[ -f "mfg/fab/%f-fabrication_notes%v.txt" ] && cat "mfg/fab/%f-fabrication_notes%v.txt" || echo ""' + + # Assembly notes + - variable: 'ASSEMBLY_NOTES' + expand_in_command: true + command: '[ -f "mfg/assembly/%f-assembly_notes%v.txt" ] && cat "mfg/assembly/%f-assembly_notes%v.txt" || echo ""' + + # Page titles for automatic ToC + - variable: 'SHEET_NAME_01' + text: 'Cover Page' + - variable: 'SHEET_NAME_02' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 2' + - variable: 'SHEET_NAME_03' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 3' + - variable: 'SHEET_NAME_04' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 4' + - variable: 'SHEET_NAME_05' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 5' + - variable: 'SHEET_NAME_06' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 6' + - variable: 'SHEET_NAME_07' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 7' + - variable: 'SHEET_NAME_08' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 8' + - variable: 'SHEET_NAME_09' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 9' + - variable: 'SHEET_NAME_10' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 10' + - variable: 'SHEET_NAME_11' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 11' + - variable: 'SHEET_NAME_12' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 12' + - variable: 'SHEET_NAME_13' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 13' + - variable: 'SHEET_NAME_14' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 14' + - variable: 'SHEET_NAME_15' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 15' + - variable: 'SHEET_NAME_16' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 16' + - variable: 'SHEET_NAME_17' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 17' + - variable: 'SHEET_NAME_18' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 18' + - variable: 'SHEET_NAME_19' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 19' + - variable: 'SHEET_NAME_20' + command: 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 20' + + (kibot - config_reader.py:683) +DEBUG:Parsing preflight options: {'update_xml': True, 'set_text_variables': [{'variable': 'REVISION', 'text': 'NO_TAG+ (Unreleased)'}, {'variable': 'RELEASE_STATE', 'text': 'DRAFT'}, {'variable': 'RELEASE_DATE', 'command': 'git log -1 --format="%ad" --date=short'}, {'variable': 'GIT_HASH_SCH', 'command': 'git log -1 --format="%h" $KIBOT_SCH_NAME'}, {'variable': 'GIT_HASH_PCB', 'command': 'git log -1 --format="%h" $KIBOT_PCB_NAME'}, {'variable': 'GIT_HASH', 'command': 'git log -1 --format="%h"'}, {'variable': 'GIT_URL', 'text': '/jkrauss/Test_4'}, {'variable': 'PROJECT_CODE', 'text': 'P99'}, {'variable': 'ASSEMBLY_NUMBER', 'text': 'A99-9000'}, {'variable': 'ASSEMBLY_NAME', 'text': 'Assembly Name'}, {'variable': 'ASSEMBLY_SCALE', 'text': '1'}, {'variable': 'DWG_NUMBER_PCB', 'text': 'P99-9000'}, {'variable': 'DWG_NUMBER_SCH', 'text': 'S99-9000'}, {'variable': 'DWG_TITLE_PCB', 'text': 'PCB, Assembly Name'}, {'variable': 'DWG_TITLE_SCH', 'text': 'Schematic, Assembly Name'}, {'variable': 'DWG_TITLE_ASSY', 'text': 'PCB Assembly, Assembly Name'}, {'variable': 'COMPANY', 'text': 'Asymworks, LLC'}, {'variable': 'DESIGNER', 'text': 'JPK'}, {'variable': 'VARIANT', 'text': '%V'}, {'variable': 'SCHEMATIC_NOTES', 'expand_in_command': True, 'command': '[ -f "schematic/%f-schematic_notes%v.txt" ] && cat "schematic/%f-schematic_notes%v.txt" || echo ""'}, {'variable': 'FABRICATION_NOTES', 'expand_in_command': True, 'command': '[ -f "mfg/fab/%f-fabrication_notes%v.txt" ] && cat "mfg/fab/%f-fabrication_notes%v.txt" || echo ""'}, {'variable': 'ASSEMBLY_NOTES', 'expand_in_command': True, 'command': '[ -f "mfg/assembly/%f-assembly_notes%v.txt" ] && cat "mfg/assembly/%f-assembly_notes%v.txt" || echo ""'}, {'variable': 'SHEET_NAME_01', 'text': 'Cover Page'}, {'variable': 'SHEET_NAME_02', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 2'}, {'variable': 'SHEET_NAME_03', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 3'}, {'variable': 'SHEET_NAME_04', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 4'}, {'variable': 'SHEET_NAME_05', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 5'}, {'variable': 'SHEET_NAME_06', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 6'}, {'variable': 'SHEET_NAME_07', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 7'}, {'variable': 'SHEET_NAME_08', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 8'}, {'variable': 'SHEET_NAME_09', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 9'}, {'variable': 'SHEET_NAME_10', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 10'}, {'variable': 'SHEET_NAME_11', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 11'}, {'variable': 'SHEET_NAME_12', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 12'}, {'variable': 'SHEET_NAME_13', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 13'}, {'variable': 'SHEET_NAME_14', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 14'}, {'variable': 'SHEET_NAME_15', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 15'}, {'variable': 'SHEET_NAME_16', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 16'}, {'variable': 'SHEET_NAME_17', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 17'}, {'variable': 'SHEET_NAME_18', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 18'}, {'variable': 'SHEET_NAME_19', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 19'}, {'variable': 'SHEET_NAME_20', 'command': 'python3 kibot/scripts/get_sheet_title.py -f "${KIBOT_SCH_NAME%.kicad_sch}.xml" --dots-number 38 -p 20'}]} (kibot - config_reader.py:283) +DEBUG:Parsing preflight update_xml (kibot - config_reader.py:292) +DEBUG:Parsing preflight set_text_variables (kibot - config_reader.py:292) +DEBUG:Preflights loaded from `kibot/yaml/kibot_pre_set_text_variables.yaml`: ['update_xml', 'set_text_variables'] (kibot - config_reader.py:385) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'CATEGORY': 'Schematic', 'DIR': 'reports'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'DIR': 'reports'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'CATEGORY': 'Schematic', 'DIR': 'reports', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'CATEGORY': 'Schematic', 'DIR': 'reports', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @DIR@ -> reports () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'CATEGORY': 'Schematic', 'DIR': 'reports', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot preflight for generating ERC reports +# https://kibot.readthedocs.io/en/latest/configuration/preflights/erc.html + +kibot: + version: 1 + +preflight: + erc: + category: 'reports' + dir: 'reports' + format: 'HTML, RPT' + output: 'report_%f-%i%I%v.%x' + + (kibot - config_reader.py:683) +DEBUG:Parsing preflight options: {'erc': {'category': 'reports', 'dir': 'reports', 'format': 'HTML, RPT', 'output': 'report_%f-%i%I%v.%x'}} (kibot - config_reader.py:283) +DEBUG:Parsing preflight erc (kibot - config_reader.py:292) +DEBUG:Preflights loaded from `kibot/yaml/kibot_pre_erc_report.yaml`: ['erc'] (kibot - config_reader.py:385) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'CHECK_ZONE_FILLS': True, 'CATEGORY': 'Schematic', 'DIR': 'reports'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'DIR': 'reports'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'CHECK_ZONE_FILLS': False, 'CATEGORY': 'Schematic', 'DIR': 'reports', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'CHECK_ZONE_FILLS': False, 'CATEGORY': 'Schematic', 'DIR': 'reports', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @CHECK_ZONE_FILLS@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> reports () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'CHECK_ZONE_FILLS': False, 'CATEGORY': 'Schematic', 'DIR': 'reports', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot preflight for generating DRC reports +# https://kibot.readthedocs.io/en/latest/configuration/preflights/drc.html + +kibot: + version: 1 + +preflight: + check_zone_fills: false + drc: + category: 'reports' + dir: 'reports' + dont_stop: true + format: 'HTML, RPT' + output: 'report_%f-%i%I%v.%x' + + (kibot - config_reader.py:683) +DEBUG:Parsing preflight options: {'check_zone_fills': False, 'drc': {'category': 'reports', 'dir': 'reports', 'dont_stop': True, 'format': 'HTML, RPT', 'output': 'report_%f-%i%I%v.%x'}} (kibot - config_reader.py:283) +DEBUG:Parsing preflight check_zone_fills (kibot - config_reader.py:292) +DEBUG:Parsing preflight drc (kibot - config_reader.py:292) +DEBUG:Preflights loaded from `kibot/yaml/kibot_pre_drc_report.yaml`: ['check_zone_fills', 'drc'] (kibot - config_reader.py:385) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'GERBER_OUTPUT': 'gbr_gerbers', 'NOTE': 'external layer thicknesses are specified after plating'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NOTE': 'external layer thicknesses are specified after plating'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'GERBER_OUTPUT': 'gbr_gerbers', 'NOTE': 'external layer thicknesses are specified after plating', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'GERBER_OUTPUT': 'gbr_gerbers', 'NOTE': 'external layer thicknesses are specified after plating', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @GERBER_OUTPUT@ -> gbr_gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @NOTE@ -> external layer thicknesses are specified after plating () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'GERBER_OUTPUT': 'gbr_gerbers', 'NOTE': 'external layer thicknesses are specified after plating', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot preflight for Draw Fancy Stackup feature +# https://kibot.readthedocs.io/en/latest/configuration/preflights/draw_fancy_stackup.html + +kibot: + version: 1 + +preflight: + update_xml: true + draw_fancy_stackup: + gerber: 'gbr_gerbers' + gerber_extension_only: True + draw_stackup: True + draw_vias: True + columns: + - 'material' + - 'layer' + - 'thickness' + - 'dielectric' + - 'layer_type' + note: 'external layer thicknesses are specified after plating' + + (kibot - config_reader.py:683) +DEBUG:Parsing preflight options: {'update_xml': True, 'draw_fancy_stackup': {'gerber': 'gbr_gerbers', 'gerber_extension_only': True, 'draw_stackup': True, 'draw_vias': True, 'columns': ['material', 'layer', 'thickness', 'dielectric', 'layer_type'], 'note': 'external layer thicknesses are specified after plating'}} (kibot - config_reader.py:283) +DEBUG:Parsing preflight update_xml (kibot - config_reader.py:292) +DEBUG:Parsing preflight draw_fancy_stackup (kibot - config_reader.py:292) +DEBUG:Preflights loaded from `kibot/yaml/kibot_pre_draw_stackup.yaml`: ['update_xml', 'draw_fancy_stackup'] (kibot - config_reader.py:385) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_COMP_COUNT': 'csv_comp_count', 'NAME_CSV_DRILL_TABLE': 'csv_drill_table', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_COMP_COUNT': 'csv_comp_count', 'NAME_CSV_DRILL_TABLE': 'csv_drill_table', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_COMP_COUNT': 'csv_comp_count', 'NAME_CSV_DRILL_TABLE': 'csv_drill_table', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_COMP_COUNT': 'csv_comp_count', 'NAME_CSV_DRILL_TABLE': 'csv_drill_table', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME_TP_TOP@ -> csv_testpoints_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME_TP_BOTTOM@ -> csv_testpoints_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME_COMP_COUNT@ -> csv_comp_count () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME_CSV_DRILL_TABLE@ -> csv_drill_table () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME_IMPEDANCE_TABLE@ -> csv_impedance_table () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_COMP_COUNT': 'csv_comp_count', 'NAME_CSV_DRILL_TABLE': 'csv_drill_table', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot preflight for Include Table feature +# https://kibot.readthedocs.io/en/latest/configuration/preflights/include_table.html + +kibot: + version: 1 + +preflight: + include_table: + outputs: + - name: 'csv_testpoints_top' + text_alignment: 'left' + invert_columns_order: false + border_width: 0.2 + header_rule_width: 0.2 + horizontal_rule_width: 0 + vertical_rule_width: 0 + top_rule_width: 0 + bottom_rule_width: 0 + column_spacing: 1 + # force_font_width: 1.27 # mm + + - name: 'csv_testpoints_bottom' + text_alignment: 'right' + invert_columns_order: true + border_width: 0.2 + header_rule_width: 0.2 + horizontal_rule_width: 0 + vertical_rule_width: 0 + top_rule_width: 0 + bottom_rule_width: 0 + column_spacing: 1 + # force_font_width: 1.27 # mm + + - name: 'csv_comp_count' + text_alignment: 'left' + invert_columns_order: false + border_width: 0.2 + header_rule_width: 0.2 + horizontal_rule_width: 0 + vertical_rule_width: 0 + top_rule_width: 0 + bottom_rule_width: 0 + row_spacing: 3 + column_spacing: 1 + + - name: 'csv_drill_table' + text_alignment: 'left' + invert_columns_order: false + border_width: 0.2 + header_rule_width: 0.2 + horizontal_rule_width: 0 + vertical_rule_width: 0 + top_rule_width: 0 + bottom_rule_width: 0 + row_spacing: 3 + column_spacing: 1 + + - name: 'csv_impedance_table' + text_alignment: 'left' + invert_columns_order: false + border_width: 0.2 + header_rule_width: 0.2 + vertical_rule_width: 0 + top_rule_width: 0 + bottom_rule_width: 0 + row_spacing: 3 + column_spacing: 1 + + (kibot - config_reader.py:683) +DEBUG:Parsing preflight options: {'include_table': {'outputs': [{'name': 'csv_testpoints_top', 'text_alignment': 'left', 'invert_columns_order': False, 'border_width': 0.2, 'header_rule_width': 0.2, 'horizontal_rule_width': 0, 'vertical_rule_width': 0, 'top_rule_width': 0, 'bottom_rule_width': 0, 'column_spacing': 1}, {'name': 'csv_testpoints_bottom', 'text_alignment': 'right', 'invert_columns_order': True, 'border_width': 0.2, 'header_rule_width': 0.2, 'horizontal_rule_width': 0, 'vertical_rule_width': 0, 'top_rule_width': 0, 'bottom_rule_width': 0, 'column_spacing': 1}, {'name': 'csv_comp_count', 'text_alignment': 'left', 'invert_columns_order': False, 'border_width': 0.2, 'header_rule_width': 0.2, 'horizontal_rule_width': 0, 'vertical_rule_width': 0, 'top_rule_width': 0, 'bottom_rule_width': 0, 'row_spacing': 3, 'column_spacing': 1}, {'name': 'csv_drill_table', 'text_alignment': 'left', 'invert_columns_order': False, 'border_width': 0.2, 'header_rule_width': 0.2, 'horizontal_rule_width': 0, 'vertical_rule_width': 0, 'top_rule_width': 0, 'bottom_rule_width': 0, 'row_spacing': 3, 'column_spacing': 1}, {'name': 'csv_impedance_table', 'text_alignment': 'left', 'invert_columns_order': False, 'border_width': 0.2, 'header_rule_width': 0.2, 'vertical_rule_width': 0, 'top_rule_width': 0, 'bottom_rule_width': 0, 'row_spacing': 3, 'column_spacing': 1}]}} (kibot - config_reader.py:283) +DEBUG:Parsing preflight include_table (kibot - config_reader.py:292) +DEBUG:Preflights loaded from `kibot/yaml/kibot_pre_include_table.yaml`: ['include_table'] (kibot - config_reader.py:385) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'netlist', 'FORMAT': 'classic', 'COMMENT': 'Schematic netlist in KiCad format'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'netlist', 'COMMENT': 'Schematic netlist in KiCad format'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'netlist', 'FORMAT': 'classic', 'COMMENT': 'Schematic netlist in KiCad format', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'netlist', 'FORMAT': 'classic', 'COMMENT': 'Schematic netlist in KiCad format', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> netlist () (kibot - config_reader.py:78) +DEBUG:- Replacing @FORMAT@ -> classic () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Schematic netlist in KiCad format () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'netlist', 'FORMAT': 'classic', 'COMMENT': 'Schematic netlist in KiCad format', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating netlist in KiCad format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/netlist.html + +kibot: + version: 1 + +outputs: +- name: netlist + comment: 'Schematic netlist in KiCad format' + type: netlist + options: + format: 'classic' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `netlist` (netlist) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_netlist.yaml`: ['netlist'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'pdf_schematic', 'COMMENT': 'Schematic in PDF format', 'COLOR_THEME': 'Altium_Theme', 'DEFAULT_FONT': 'Arial', 'DIR': 'schematic', 'SHEET_WKS': '${KIPRJMOD}/templates/Asymworks_SCH.kicad_wks'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'pdf_schematic', 'COMMENT': 'Schematic in PDF format', 'DIR': 'schematic', 'DEFAULT_FONT': 'Arial Narrow', 'SHEET_WKS': 'templates/Asymworks_SCH.kicad_wks'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'pdf_schematic', 'COMMENT': 'Schematic in PDF format', 'COLOR_THEME': 'Altium_Theme', 'DEFAULT_FONT': 'Arial Narrow', 'DIR': 'schematic', 'SHEET_WKS': 'templates/Asymworks_SCH.kicad_wks', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pdf_schematic', 'COMMENT': 'Schematic in PDF format', 'COLOR_THEME': 'Altium_Theme', 'DEFAULT_FONT': 'Arial Narrow', 'DIR': 'schematic', 'SHEET_WKS': 'templates/Asymworks_SCH.kicad_wks', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> pdf_schematic () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Schematic in PDF format () (kibot - config_reader.py:78) +DEBUG:- Replacing @COLOR_THEME@ -> Altium_Theme () (kibot - config_reader.py:78) +DEBUG:- Replacing @DEFAULT_FONT@ -> Arial Narrow () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> schematic () (kibot - config_reader.py:78) +DEBUG:- Replacing @SHEET_WKS@ -> templates/Asymworks_SCH.kicad_wks () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pdf_schematic', 'COMMENT': 'Schematic in PDF format', 'COLOR_THEME': 'Altium_Theme', 'DEFAULT_FONT': 'Arial Narrow', 'DIR': 'schematic', 'SHEET_WKS': 'templates/Asymworks_SCH.kicad_wks', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating schematics in PDF format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/pdf_sch_print.html + +kibot: + version: 1 + +outputs: +- name: pdf_schematic + comment: 'Schematic in PDF format' + type: pdf_sch_print + dir: 'schematic' + category: 'schematic' + options: + background_color: false + color_theme: 'Altium_Theme' + default_font: 'Arial Narrow' + sheet_reference_layout: 'templates/Asymworks_SCH.kicad_wks' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `pdf_schematic` (pdf_sch_print) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_pdf_schematic.yaml`: ['pdf_schematic'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'csv_bom', 'COMMENT': 'Bill of Materials in CSV format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'csv_bom', 'COMMENT': 'Bill of Materials in CSV format', 'DIR': 'mfg/assembly'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'csv_bom', 'COMMENT': 'Bill of Materials in CSV format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_bom', 'COMMENT': 'Bill of Materials in CSV format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> csv_bom () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Bill of Materials in CSV format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @IPN_FIELD@ -> Asymworks IPN () (kibot - config_reader.py:78) +DEBUG:- Replacing @MPN_FIELD@ -> Manufacturer PN () (kibot - config_reader.py:78) +DEBUG:- Replacing @MAN_FIELD@ -> Manufacturer () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_bom', 'COMMENT': 'Bill of Materials in CSV format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Bill of Materials in CSV format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/bom.html + +kibot: + version: 1 + +outputs: +- name: csv_bom + comment: 'Bill of Materials in CSV format' + type: bom + category: 'mfg/assembly' + dir: 'mfg/assembly' + options: + format: CSV + csv: + hide_pcb_info: true + hide_stats_info: true + + group_fields: ['Manufacturer PN', 'Asymworks IPN', 'Value'] + + columns: + - "Row" + - "Quantity Per PCB" + - "References" + - "Value" + - "Datasheet" + - "Footprint" + - "Description" + - "Asymworks IPN" + - "Manufacturer" + - "Manufacturer PN" + - "LCSC" + # - "arrow#" + # - "digikey#" + # - "farnell#" + # - "mouser#" + # - "newark#" + # - "rs#" + # - "tme#" + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `csv_bom` (bom) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_csv_bom.yaml`: ['csv_bom'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'html_bom', 'COMMENT': 'BOM in HTML format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'html_bom', 'COMMENT': 'Bill of Materials in HTML format', 'DIR': 'mfg/assembly'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'html_bom', 'COMMENT': 'Bill of Materials in HTML format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'html_bom', 'COMMENT': 'Bill of Materials in HTML format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> html_bom () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Bill of Materials in HTML format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @IPN_FIELD@ -> Asymworks IPN () (kibot - config_reader.py:78) +DEBUG:- Replacing @MPN_FIELD@ -> Manufacturer PN () (kibot - config_reader.py:78) +DEBUG:- Replacing @MAN_FIELD@ -> Manufacturer () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'html_bom', 'COMMENT': 'Bill of Materials in HTML format', 'DIR': 'mfg/assembly', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Interactive HTML BoM +# https://kibot.readthedocs.io/en/latest/configuration/outputs/ibom.html + +kibot: + version: 1 + +outputs: +- name: html_bom + comment: 'Bill of Materials in HTML format' + type: bom + category: 'mfg/assembly' + dir: 'mfg/assembly' + options: + format: HTML + html: + title: 'Bill of Materials' + datasheet_as_link: "Datasheet" + lcsc_link: true + logo: false + style: modern-blue + + group_fields: ['Manufacturer PN', 'Value'] + + columns: + - "Row" + - "Quantity Per PCB" + - "References" + - "Value" + - "Datasheet" + - "Footprint" + - "Description" + - "Asymworks IPN" + - "Manufacturer" + - "Manufacturer PN" + - "LCSC" + # - "arrow#" + # - "digikey#" + # - "farnell#" + # - "mouser#" + # - "newark#" + # - "rs#" + # - "tme#" + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `html_bom` (bom) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_html_bom.yaml`: ['html_bom'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'html_bom_interactive', 'COMMENT': 'Interactive BOM in HTML format', 'DIR': 'mfg/assembly', 'EXCLUDE_FILTER': 'exclude_testpoints', 'TITLE': '', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'html_bom_interactive', 'COMMENT': 'Bill of Materials in HTML format', 'DIR': 'mfg/assembly'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'html_bom_interactive', 'COMMENT': 'Bill of Materials in HTML format', 'DIR': 'mfg/assembly', 'EXCLUDE_FILTER': 'exclude_testpoints', 'TITLE': '', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'html_bom_interactive', 'COMMENT': 'Bill of Materials in HTML format', 'DIR': 'mfg/assembly', 'EXCLUDE_FILTER': 'exclude_testpoints', 'TITLE': '', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> html_bom_interactive () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Bill of Materials in HTML format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_FILTER@ -> exclude_testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @TITLE@ -> () (kibot - config_reader.py:78) +DEBUG:- Replacing @IPN_FIELD@ -> Asymworks IPN () (kibot - config_reader.py:78) +DEBUG:- Replacing @MPN_FIELD@ -> Manufacturer PN () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'html_bom_interactive', 'COMMENT': 'Bill of Materials in HTML format', 'DIR': 'mfg/assembly', 'EXCLUDE_FILTER': 'exclude_testpoints', 'TITLE': '', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Interactive HTML BoM +# https://kibot.readthedocs.io/en/latest/configuration/outputs/ibom.html + +# This output is currently somewhat buggy, and fails at odd times complaining +# about missing embedded Schematic WKS frame files. + +kibot: + version: 1 + +outputs: +- name: html_bom_interactive + comment: 'Bill of Materials in HTML format' + type: ibom + dir: 'mfg/assembly' + category: 'mfg/assembly' + options: + # extra_data_file: '%F.net' + dark_mode: true + show_fields: 'Value,Footprint,Asymworks IPN,Manufacturer PN' + group_fields: 'Value,Asymworks IPN' + show_fabrication: true + highlight_pin1: "selected" + exclude_filter: 'exclude_testpoints' + hide_excluded: true + forced_name: '' + mark_when_checked: 'Placed' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `html_bom_interactive` (ibom) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_html_ibom.yaml`: ['html_bom_interactive'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'html_kiri', 'COMMENT': 'KiRi webpage', 'DIR': 'kiri'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'html_kiri', 'COMMENT': 'KiRI webpage', 'DIR': 'kiri'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'html_kiri', 'COMMENT': 'KiRI webpage', 'DIR': 'kiri', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'html_kiri', 'COMMENT': 'KiRI webpage', 'DIR': 'kiri', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> html_kiri () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> KiRI webpage () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> kiri () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'html_kiri', 'COMMENT': 'KiRI webpage', 'DIR': 'kiri', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for diff web page between commits +# https://kibot.readthedocs.io/en/latest/configuration/outputs/kiri.html + +kibot: + version: 1 + +outputs: +- name: html_kiri + comment: 'KiRI webpage' + type: kiri + category: 'kiri' + dir: 'kiri' + layers: all + options: + keep_generated: true + max_commits: 3 + revision: 'HEAD' + zones: 'global' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `html_kiri` (kiri) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_html_kiri.yaml`: ['html_kiri'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'html_navigate_results', 'COMMENT': 'Results webpage in HTML format', 'DIR': 'html', 'TITLE': '', 'LOGO': '', 'LOGO_URL': ''} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'html_navigate_results', 'COMMENT': 'Results webpage in HTML format', 'DIR': 'html', 'TITLE': 'A99-9000 (Assembly Name)'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'html_navigate_results', 'COMMENT': 'Results webpage in HTML format', 'DIR': 'html', 'TITLE': 'A99-9000 (Assembly Name)', 'LOGO': '', 'LOGO_URL': '', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'html_navigate_results', 'COMMENT': 'Results webpage in HTML format', 'DIR': 'html', 'TITLE': 'A99-9000 (Assembly Name)', 'LOGO': '', 'LOGO_URL': '', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> html_navigate_results () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Results webpage in HTML format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> html () (kibot - config_reader.py:78) +DEBUG:- Replacing @TITLE@ -> A99-9000 (Assembly Name) () (kibot - config_reader.py:78) +DEBUG:- Replacing @LOGO@ -> () (kibot - config_reader.py:78) +DEBUG:- Replacing @LOGO_URL@ -> () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'html_navigate_results', 'COMMENT': 'Results webpage in HTML format', 'DIR': 'html', 'TITLE': 'A99-9000 (Assembly Name)', 'LOGO': '', 'LOGO_URL': '', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating an HTML page for navigating the results +# https://kibot.readthedocs.io/en/latest/configuration/outputs/navigate_results_rb.html + +kibot: + version: 1 + +outputs: +- name: html_navigate_results + comment: 'Results webpage in HTML format' + type: navigate_results_rb + # category: 'html' + dir: 'html' + options: + link_from_root: 'index.html' + logo: '' + logo_force_height: 40 + logo_url: '' + nav_bar: true + render_markdown: true + display_category_images: false + display_kibot_version: false + title: 'A99-9000 (Assembly Name)' + title_url: '' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `html_navigate_results` (navigate_results_rb) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_navigate_results.yaml`: ['html_navigate_results'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'pcbdraw_top', 'COMMENT': 'PCB 2D Render (Top)', 'DIR': 'renders', 'BOTTOM': False} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'pcbdraw_top', 'COMMENT': 'PCB 2D Render (Top)', 'DIR': 'renders', 'FORMAT': 'svg', 'BOTTOM': False, 'COMPONENTS': 'none'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'pcbdraw_top', 'COMMENT': 'PCB 2D Render (Top)', 'DIR': 'renders', 'BOTTOM': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'FORMAT': 'svg', 'COMPONENTS': 'none'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pcbdraw_top', 'COMMENT': 'PCB 2D Render (Top)', 'DIR': 'renders', 'BOTTOM': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'FORMAT': 'svg', 'COMPONENTS': 'none'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> pcbdraw_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> PCB 2D Render (Top) () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @BOTTOM@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @FORMAT@ -> svg () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pcbdraw_top', 'COMMENT': 'PCB 2D Render (Top)', 'DIR': 'renders', 'BOTTOM': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'FORMAT': 'svg', 'COMPONENTS': 'none'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating PCB 2D renders with PcbDraw +# https://kibot.readthedocs.io/en/latest/configuration/outputs/pcbdraw.html + +kibot: + version: 1 + +outputs: + - name: pcbdraw_top + output_id: pcbdraw_top + comment: 'PCB 2D Render (Top)' + type: pcbdraw + category: 'renders' + dir: 'renders' + options: + bottom: false + format: svg + output: '%f-%I%v.%x' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `pcbdraw_top` (pcbdraw) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_pcbdraw.yaml`: ['pcbdraw_top'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'pcbdraw_top', 'COMMENT': 'PCB 2D Render (Top)', 'DIR': 'renders', 'BOTTOM': False} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'pcbdraw_bottom', 'COMMENT': 'PCB 2D Render (Bottom)', 'DIR': 'renders', 'FORMAT': 'svg', 'BOTTOM': True, 'COMPONENTS': 'none'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'pcbdraw_bottom', 'COMMENT': 'PCB 2D Render (Bottom)', 'DIR': 'renders', 'BOTTOM': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'FORMAT': 'svg', 'COMPONENTS': 'none'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pcbdraw_bottom', 'COMMENT': 'PCB 2D Render (Bottom)', 'DIR': 'renders', 'BOTTOM': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'FORMAT': 'svg', 'COMPONENTS': 'none'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> pcbdraw_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> PCB 2D Render (Bottom) () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @BOTTOM@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @FORMAT@ -> svg () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pcbdraw_bottom', 'COMMENT': 'PCB 2D Render (Bottom)', 'DIR': 'renders', 'BOTTOM': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'FORMAT': 'svg', 'COMPONENTS': 'none'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating PCB 2D renders with PcbDraw +# https://kibot.readthedocs.io/en/latest/configuration/outputs/pcbdraw.html + +kibot: + version: 1 + +outputs: + - name: pcbdraw_bottom + output_id: pcbdraw_bottom + comment: 'PCB 2D Render (Bottom)' + type: pcbdraw + category: 'renders' + dir: 'renders' + options: + bottom: true + format: svg + output: '%f-%I%v.%x' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `pcbdraw_bottom` (pcbdraw) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_pcbdraw.yaml`: ['pcbdraw_bottom'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'png_3d_viewer', 'COMMENT': '3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': '', 'VIEW': 'top', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'ZOOM': 0, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'png_3d_viewer_top', 'COMMENT': 'Top 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'top', 'VIEW': 'top', 'RAYTRACING': False} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'png_3d_viewer_top', 'COMMENT': 'Top 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'top', 'VIEW': 'top', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'ZOOM': 0, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'png_3d_viewer_top', 'COMMENT': 'Top 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'top', 'VIEW': 'top', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'ZOOM': 0, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> png_3d_viewer_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Top 3D viewer PCB render in PNG format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @SUFFIX@ -> top () (kibot - config_reader.py:78) +DEBUG:- Replacing @VIEW@ -> top () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_X@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Y@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Z@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ZOOM@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @HEIGHT@ -> 2000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @WIDTH@ -> 2000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @KEY_COLOR@ -> #FF00FF () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'png_3d_viewer_top', 'COMMENT': 'Top 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'top', 'VIEW': 'top', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'ZOOM': 0, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for 3D Viewer renders in PNG format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/render_3d.html + +kibot: + version: 1 + +outputs: +- name: png_3d_viewer_top + comment: 'Top 3D viewer PCB render in PNG format' + type: render_3d + category: 'renders' + dir: 'renders' + options: + output: '%f-top%I%v.%x' + auto_crop: true + enable_crop_workaround: true + rotate_x: 0 + rotate_y: 0 + rotate_z: 0 + zoom: 0 + height: 2000 + width: 2000 + view: 'top' + force_stackup_colors: true + orthographic: true + transparent_background: true + transparent_background_color: '#FF00FF' + transparent_background_fuzz: 40 + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `png_3d_viewer_top` (render_3d) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_png_3d_viewer.yaml`: ['png_3d_viewer_top'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'png_3d_viewer', 'COMMENT': '3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': '', 'VIEW': 'top', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'ZOOM': 0, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'png_3d_viewer_bottom', 'COMMENT': 'Bottom 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'bottom', 'VIEW': 'bottom', 'RAYTRACING': False} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'png_3d_viewer_bottom', 'COMMENT': 'Bottom 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'bottom', 'VIEW': 'bottom', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'ZOOM': 0, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'png_3d_viewer_bottom', 'COMMENT': 'Bottom 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'bottom', 'VIEW': 'bottom', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'ZOOM': 0, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> png_3d_viewer_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Bottom 3D viewer PCB render in PNG format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @SUFFIX@ -> bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @VIEW@ -> bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_X@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Y@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Z@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ZOOM@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @HEIGHT@ -> 2000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @WIDTH@ -> 2000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @KEY_COLOR@ -> #FF00FF () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'png_3d_viewer_bottom', 'COMMENT': 'Bottom 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'bottom', 'VIEW': 'bottom', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'ZOOM': 0, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for 3D Viewer renders in PNG format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/render_3d.html + +kibot: + version: 1 + +outputs: +- name: png_3d_viewer_bottom + comment: 'Bottom 3D viewer PCB render in PNG format' + type: render_3d + category: 'renders' + dir: 'renders' + options: + output: '%f-bottom%I%v.%x' + auto_crop: true + enable_crop_workaround: true + rotate_x: 0 + rotate_y: 0 + rotate_z: 0 + zoom: 0 + height: 2000 + width: 2000 + view: 'bottom' + force_stackup_colors: true + orthographic: true + transparent_background: true + transparent_background_color: '#FF00FF' + transparent_background_fuzz: 40 + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `png_3d_viewer_bottom` (render_3d) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_png_3d_viewer.yaml`: ['png_3d_viewer_bottom'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'png_3d_viewer', 'COMMENT': '3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': '', 'VIEW': 'top', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'ZOOM': 0, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'png_3d_viewer_angled_top', 'COMMENT': 'Top (angled) 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'angled_top', 'VIEW': 'top', 'ROTATE_X': 2, 'ROTATE_Y': -1, 'ROTATE_Z': 1, 'ZOOM': -1, 'RAYTRACING': False} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'png_3d_viewer_angled_top', 'COMMENT': 'Top (angled) 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'angled_top', 'VIEW': 'top', 'ROTATE_X': 2, 'ROTATE_Y': -1, 'ROTATE_Z': 1, 'ZOOM': -1, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'png_3d_viewer_angled_top', 'COMMENT': 'Top (angled) 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'angled_top', 'VIEW': 'top', 'ROTATE_X': 2, 'ROTATE_Y': -1, 'ROTATE_Z': 1, 'ZOOM': -1, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> png_3d_viewer_angled_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Top (angled) 3D viewer PCB render in PNG format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @SUFFIX@ -> angled_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @VIEW@ -> top () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_X@ -> 2 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Y@ -> -1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Z@ -> 1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ZOOM@ -> -1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @HEIGHT@ -> 2000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @WIDTH@ -> 2000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @KEY_COLOR@ -> #FF00FF () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'png_3d_viewer_angled_top', 'COMMENT': 'Top (angled) 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'angled_top', 'VIEW': 'top', 'ROTATE_X': 2, 'ROTATE_Y': -1, 'ROTATE_Z': 1, 'ZOOM': -1, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for 3D Viewer renders in PNG format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/render_3d.html + +kibot: + version: 1 + +outputs: +- name: png_3d_viewer_angled_top + comment: 'Top (angled) 3D viewer PCB render in PNG format' + type: render_3d + category: 'renders' + dir: 'renders' + options: + output: '%f-angled_top%I%v.%x' + auto_crop: true + enable_crop_workaround: true + rotate_x: 2 + rotate_y: -1 + rotate_z: 1 + zoom: -1 + height: 2000 + width: 2000 + view: 'top' + force_stackup_colors: true + orthographic: true + transparent_background: true + transparent_background_color: '#FF00FF' + transparent_background_fuzz: 40 + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `png_3d_viewer_angled_top` (render_3d) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_png_3d_viewer.yaml`: ['png_3d_viewer_angled_top'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'png_3d_viewer', 'COMMENT': '3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': '', 'VIEW': 'top', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'ZOOM': 0, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'png_3d_viewer_angled_bottom', 'COMMENT': 'Bottom (angled) 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'angled_bottom', 'VIEW': 'bottom', 'ROTATE_X': 2, 'ROTATE_Y': -1, 'ROTATE_Z': -1, 'ZOOM': -1, 'RAYTRACING': False} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'png_3d_viewer_angled_bottom', 'COMMENT': 'Bottom (angled) 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'angled_bottom', 'VIEW': 'bottom', 'ROTATE_X': 2, 'ROTATE_Y': -1, 'ROTATE_Z': -1, 'ZOOM': -1, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'png_3d_viewer_angled_bottom', 'COMMENT': 'Bottom (angled) 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'angled_bottom', 'VIEW': 'bottom', 'ROTATE_X': 2, 'ROTATE_Y': -1, 'ROTATE_Z': -1, 'ZOOM': -1, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> png_3d_viewer_angled_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Bottom (angled) 3D viewer PCB render in PNG format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @SUFFIX@ -> angled_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @VIEW@ -> bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_X@ -> 2 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Y@ -> -1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Z@ -> -1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ZOOM@ -> -1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @HEIGHT@ -> 2000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @WIDTH@ -> 2000 () (kibot - config_reader.py:78) +DEBUG:- Replacing @KEY_COLOR@ -> #FF00FF () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'png_3d_viewer_angled_bottom', 'COMMENT': 'Bottom (angled) 3D viewer PCB render in PNG format', 'DIR': 'renders', 'SUFFIX': 'angled_bottom', 'VIEW': 'bottom', 'ROTATE_X': 2, 'ROTATE_Y': -1, 'ROTATE_Z': -1, 'ZOOM': -1, 'HEIGHT': 2000, 'WIDTH': 2000, 'KEY_COLOR': '#FF00FF', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'RAYTRACING': False} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for 3D Viewer renders in PNG format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/render_3d.html + +kibot: + version: 1 + +outputs: +- name: png_3d_viewer_angled_bottom + comment: 'Bottom (angled) 3D viewer PCB render in PNG format' + type: render_3d + category: 'renders' + dir: 'renders' + options: + output: '%f-angled_bottom%I%v.%x' + auto_crop: true + enable_crop_workaround: true + rotate_x: 2 + rotate_y: -1 + rotate_z: -1 + zoom: -1 + height: 2000 + width: 2000 + view: 'bottom' + force_stackup_colors: true + orthographic: true + transparent_background: true + transparent_background_color: '#FF00FF' + transparent_background_fuzz: 40 + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `png_3d_viewer_angled_bottom` (render_3d) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_png_3d_viewer.yaml`: ['png_3d_viewer_angled_bottom'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'blender_3d_angled_top', 'COMMENT': 'PCB 3D model in PCB3D Blender format', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1280, 'RESOLUTION_Y': 1280, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 5, 'ROTATE_X': 30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'VIEW': 'top', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'blender_3d_top', 'COMMENT': 'High Quality 3D Render (Top)', 'DIR': 'renders', 'VIEW': 'top', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'SAMPLES': 20, 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'DNF_FILTER': '_kibom_dnf_Config', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.7, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 0.1} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'blender_3d_top', 'COMMENT': 'High Quality 3D Render (Top)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'VIEW': 'top', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.7, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 0.1, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'blender_3d_top', 'COMMENT': 'High Quality 3D Render (Top)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'VIEW': 'top', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.7, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 0.1, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> blender_3d_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> High Quality 3D Render (Top) () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @DNF_FILTER@ -> _kibom_dnf_Config () (kibot - config_reader.py:78) +DEBUG:- Replacing @RESOLUTION_X@ -> 1500 () (kibot - config_reader.py:78) +DEBUG:- Replacing @RESOLUTION_Y@ -> 1500 () (kibot - config_reader.py:78) +DEBUG:- Replacing @TEXTURE_DPI@ -> 1031.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @SAMPLES@ -> 20 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_X@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Y@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Z@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @VIEW@ -> top () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_RADIUS@ -> 6.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_HEIGHT@ -> 10.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_LIGHT@ -> 0.7 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ACCENT_LIGHT@ -> 0.1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @SPOT_LIGHT@ -> 0.1 () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'blender_3d_top', 'COMMENT': 'High Quality 3D Render (Top)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'VIEW': 'top', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.7, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 0.1, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating PCB 3D model PCB3D Blender format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/PCB2Blender_ToolsOptions.html + +# The lighting setup allows for even, diffuse background lighting as well as +# a focused light for shadows/depth. The eight area lights form a ring around +# the top of the board, while the spot light illuminates from behind and to the +# right of the camera. The accent lights illuminate from behind the board at a +# low angle to help light up solder pads. +# +# For top/bottom renders that look directly down at the board, set 0.1 +# to 0.1 and @ADIFFUSE_LIGHT@ to 0.7. For angle renders, start with 0.1 +# set to 2.0 and 0.7 at 0.4. Some experimentation, including with +# the ring radius and height, may be required to get good results. + +kibot: + version: 1 + +outputs: + - name: blender_3d_top + output_id: blender_3d_top + comment: 'High Quality 3D Render (Top)' + type: blender_export + category: 'renders' + dir: 'renders' + options: + auto_camera_z_axis_factor: 1.1 + pcb_import: + enhance_materials: true + texture_dpi: 1031.0 + + pcb3d: + download: true + download_lcsc: true + dnf_filter: + - _kibom_dnf_Config + + render_options: + auto_crop: true + transparent_background: true + samples: 20 + resolution_x: 1500 + resolution_y: 1500 + + point_of_view: + rotate_x: 0 + rotate_y: 0 + rotate_z: 0 + view: top + + outputs: + - type: render + output: '%f-%I%v.%x' + + light: + - name: spot + energy: 0.1 + pos_x: -size*3.33 + pos_y: size*3.33 + pos_z: size*5 + type: POINT + + - name: accent_1 + energy: 0.1 + pos_x: -size*2 + pos_y: size*6 + pos_z: size*3 + type: AREA + + - name: accent_2 + energy: 0.1 + pos_x: size*2 + pos_y: size*6 + pos_z: size*3 + type: AREA + + - name: ring_1 + energy: 0.7 + pos_x: size*6.0 + pos_y: 0 + pos_z: size*10.0 + type: AREA + + - name: ring_2 + energy: 0.7 + pos_x: -size*6.0 + pos_y: 0 + pos_z: size*10.0 + type: AREA + + - name: ring_3 + energy: 0.7 + pos_x: 0 + pos_y: size*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_4 + energy: 0.7 + pos_x: 0 + pos_y: -size*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_5 + energy: 0.7 + pos_x: size*0.71*6.0 + pos_y: size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_6 + energy: 0.7 + pos_x: -size*0.71*6.0 + pos_y: size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_7 + energy: 0.7 + pos_x: size*0.71*6.0 + pos_y: -size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_8 + energy: 0.7 + pos_x: -size*0.71*6.0 + pos_y: -size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `blender_3d_top` (blender_export) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_blender.yaml`: ['blender_3d_top'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'blender_3d_angled_top', 'COMMENT': 'PCB 3D model in PCB3D Blender format', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1280, 'RESOLUTION_Y': 1280, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 5, 'ROTATE_X': 30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'VIEW': 'top', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'blender_3d_bottom', 'COMMENT': 'High Quality 3D Render (Bottom)', 'DIR': 'renders', 'VIEW': 'bottom', 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'SAMPLES': 20, 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'DNF_FILTER': '_kibom_dnf_Config', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.7, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 0.1} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'blender_3d_bottom', 'COMMENT': 'High Quality 3D Render (Bottom)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'VIEW': 'bottom', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.7, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 0.1, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'blender_3d_bottom', 'COMMENT': 'High Quality 3D Render (Bottom)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'VIEW': 'bottom', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.7, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 0.1, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> blender_3d_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> High Quality 3D Render (Bottom) () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @DNF_FILTER@ -> _kibom_dnf_Config () (kibot - config_reader.py:78) +DEBUG:- Replacing @RESOLUTION_X@ -> 1500 () (kibot - config_reader.py:78) +DEBUG:- Replacing @RESOLUTION_Y@ -> 1500 () (kibot - config_reader.py:78) +DEBUG:- Replacing @TEXTURE_DPI@ -> 1031.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @SAMPLES@ -> 20 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_X@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Y@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Z@ -> 0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @VIEW@ -> bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_RADIUS@ -> 6.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_HEIGHT@ -> 10.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_LIGHT@ -> 0.7 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ACCENT_LIGHT@ -> 0.1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @SPOT_LIGHT@ -> 0.1 () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'blender_3d_bottom', 'COMMENT': 'High Quality 3D Render (Bottom)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': 0, 'ROTATE_Y': 0, 'ROTATE_Z': 0, 'VIEW': 'bottom', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.7, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 0.1, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating PCB 3D model PCB3D Blender format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/PCB2Blender_ToolsOptions.html + +# The lighting setup allows for even, diffuse background lighting as well as +# a focused light for shadows/depth. The eight area lights form a ring around +# the top of the board, while the spot light illuminates from behind and to the +# right of the camera. The accent lights illuminate from behind the board at a +# low angle to help light up solder pads. +# +# For top/bottom renders that look directly down at the board, set 0.1 +# to 0.1 and @ADIFFUSE_LIGHT@ to 0.7. For angle renders, start with 0.1 +# set to 2.0 and 0.7 at 0.4. Some experimentation, including with +# the ring radius and height, may be required to get good results. + +kibot: + version: 1 + +outputs: + - name: blender_3d_bottom + output_id: blender_3d_bottom + comment: 'High Quality 3D Render (Bottom)' + type: blender_export + category: 'renders' + dir: 'renders' + options: + auto_camera_z_axis_factor: 1.1 + pcb_import: + enhance_materials: true + texture_dpi: 1031.0 + + pcb3d: + download: true + download_lcsc: true + dnf_filter: + - _kibom_dnf_Config + + render_options: + auto_crop: true + transparent_background: true + samples: 20 + resolution_x: 1500 + resolution_y: 1500 + + point_of_view: + rotate_x: 0 + rotate_y: 0 + rotate_z: 0 + view: bottom + + outputs: + - type: render + output: '%f-%I%v.%x' + + light: + - name: spot + energy: 0.1 + pos_x: -size*3.33 + pos_y: size*3.33 + pos_z: size*5 + type: POINT + + - name: accent_1 + energy: 0.1 + pos_x: -size*2 + pos_y: size*6 + pos_z: size*3 + type: AREA + + - name: accent_2 + energy: 0.1 + pos_x: size*2 + pos_y: size*6 + pos_z: size*3 + type: AREA + + - name: ring_1 + energy: 0.7 + pos_x: size*6.0 + pos_y: 0 + pos_z: size*10.0 + type: AREA + + - name: ring_2 + energy: 0.7 + pos_x: -size*6.0 + pos_y: 0 + pos_z: size*10.0 + type: AREA + + - name: ring_3 + energy: 0.7 + pos_x: 0 + pos_y: size*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_4 + energy: 0.7 + pos_x: 0 + pos_y: -size*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_5 + energy: 0.7 + pos_x: size*0.71*6.0 + pos_y: size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_6 + energy: 0.7 + pos_x: -size*0.71*6.0 + pos_y: size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_7 + energy: 0.7 + pos_x: size*0.71*6.0 + pos_y: -size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_8 + energy: 0.7 + pos_x: -size*0.71*6.0 + pos_y: -size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `blender_3d_bottom` (blender_export) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_blender.yaml`: ['blender_3d_bottom'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'blender_3d_angled_top', 'COMMENT': 'PCB 3D model in PCB3D Blender format', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1280, 'RESOLUTION_Y': 1280, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 5, 'ROTATE_X': 30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'VIEW': 'top', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'blender_3d_angled_top', 'COMMENT': 'High Quality 3D Render (Angled Top)', 'DIR': 'renders', 'VIEW': 'top', 'ROTATE_X': 30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'SAMPLES': 20, 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'DNF_FILTER': '_kibom_dnf_Config', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'blender_3d_angled_top', 'COMMENT': 'High Quality 3D Render (Angled Top)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': 30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'VIEW': 'top', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'blender_3d_angled_top', 'COMMENT': 'High Quality 3D Render (Angled Top)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': 30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'VIEW': 'top', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> blender_3d_angled_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> High Quality 3D Render (Angled Top) () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @DNF_FILTER@ -> _kibom_dnf_Config () (kibot - config_reader.py:78) +DEBUG:- Replacing @RESOLUTION_X@ -> 1500 () (kibot - config_reader.py:78) +DEBUG:- Replacing @RESOLUTION_Y@ -> 1500 () (kibot - config_reader.py:78) +DEBUG:- Replacing @TEXTURE_DPI@ -> 1031.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @SAMPLES@ -> 20 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_X@ -> 30 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Y@ -> 10 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Z@ -> 10 () (kibot - config_reader.py:78) +DEBUG:- Replacing @VIEW@ -> top () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_RADIUS@ -> 6.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_HEIGHT@ -> 10.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_LIGHT@ -> 0.4 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ACCENT_LIGHT@ -> 0.1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @SPOT_LIGHT@ -> 2.0 () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'blender_3d_angled_top', 'COMMENT': 'High Quality 3D Render (Angled Top)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': 30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'VIEW': 'top', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating PCB 3D model PCB3D Blender format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/PCB2Blender_ToolsOptions.html + +# The lighting setup allows for even, diffuse background lighting as well as +# a focused light for shadows/depth. The eight area lights form a ring around +# the top of the board, while the spot light illuminates from behind and to the +# right of the camera. The accent lights illuminate from behind the board at a +# low angle to help light up solder pads. +# +# For top/bottom renders that look directly down at the board, set 2.0 +# to 0.1 and @ADIFFUSE_LIGHT@ to 0.7. For angle renders, start with 2.0 +# set to 2.0 and 0.4 at 0.4. Some experimentation, including with +# the ring radius and height, may be required to get good results. + +kibot: + version: 1 + +outputs: + - name: blender_3d_angled_top + output_id: blender_3d_angled_top + comment: 'High Quality 3D Render (Angled Top)' + type: blender_export + category: 'renders' + dir: 'renders' + options: + auto_camera_z_axis_factor: 1.1 + pcb_import: + enhance_materials: true + texture_dpi: 1031.0 + + pcb3d: + download: true + download_lcsc: true + dnf_filter: + - _kibom_dnf_Config + + render_options: + auto_crop: true + transparent_background: true + samples: 20 + resolution_x: 1500 + resolution_y: 1500 + + point_of_view: + rotate_x: 30 + rotate_y: 10 + rotate_z: 10 + view: top + + outputs: + - type: render + output: '%f-%I%v.%x' + + light: + - name: spot + energy: 2.0 + pos_x: -size*3.33 + pos_y: size*3.33 + pos_z: size*5 + type: POINT + + - name: accent_1 + energy: 0.1 + pos_x: -size*2 + pos_y: size*6 + pos_z: size*3 + type: AREA + + - name: accent_2 + energy: 0.1 + pos_x: size*2 + pos_y: size*6 + pos_z: size*3 + type: AREA + + - name: ring_1 + energy: 0.4 + pos_x: size*6.0 + pos_y: 0 + pos_z: size*10.0 + type: AREA + + - name: ring_2 + energy: 0.4 + pos_x: -size*6.0 + pos_y: 0 + pos_z: size*10.0 + type: AREA + + - name: ring_3 + energy: 0.4 + pos_x: 0 + pos_y: size*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_4 + energy: 0.4 + pos_x: 0 + pos_y: -size*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_5 + energy: 0.4 + pos_x: size*0.71*6.0 + pos_y: size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_6 + energy: 0.4 + pos_x: -size*0.71*6.0 + pos_y: size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_7 + energy: 0.4 + pos_x: size*0.71*6.0 + pos_y: -size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_8 + energy: 0.4 + pos_x: -size*0.71*6.0 + pos_y: -size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `blender_3d_angled_top` (blender_export) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_blender.yaml`: ['blender_3d_angled_top'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'blender_3d_angled_top', 'COMMENT': 'PCB 3D model in PCB3D Blender format', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1280, 'RESOLUTION_Y': 1280, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 5, 'ROTATE_X': 30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'VIEW': 'top', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'blender_3d_angled_bottom', 'COMMENT': 'High Quality 3D Render (Angled Bottom)', 'DIR': 'renders', 'VIEW': 'bottom', 'ROTATE_X': -30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'SAMPLES': 20, 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'DNF_FILTER': '_kibom_dnf_Config', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'blender_3d_angled_bottom', 'COMMENT': 'High Quality 3D Render (Angled Bottom)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': -30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'VIEW': 'bottom', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'blender_3d_angled_bottom', 'COMMENT': 'High Quality 3D Render (Angled Bottom)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': -30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'VIEW': 'bottom', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> blender_3d_angled_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> High Quality 3D Render (Angled Bottom) () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> renders () (kibot - config_reader.py:78) +DEBUG:- Replacing @DNF_FILTER@ -> _kibom_dnf_Config () (kibot - config_reader.py:78) +DEBUG:- Replacing @RESOLUTION_X@ -> 1500 () (kibot - config_reader.py:78) +DEBUG:- Replacing @RESOLUTION_Y@ -> 1500 () (kibot - config_reader.py:78) +DEBUG:- Replacing @TEXTURE_DPI@ -> 1031.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @SAMPLES@ -> 20 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_X@ -> -30 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Y@ -> 10 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ROTATE_Z@ -> 10 () (kibot - config_reader.py:78) +DEBUG:- Replacing @VIEW@ -> bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_RADIUS@ -> 6.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_HEIGHT@ -> 10.0 () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIFFUSE_LIGHT@ -> 0.4 () (kibot - config_reader.py:78) +DEBUG:- Replacing @ACCENT_LIGHT@ -> 0.1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @SPOT_LIGHT@ -> 2.0 () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'blender_3d_angled_bottom', 'COMMENT': 'High Quality 3D Render (Angled Bottom)', 'DIR': 'renders', 'DNF_FILTER': '_kibom_dnf_Config', 'RESOLUTION_X': 1500, 'RESOLUTION_Y': 1500, 'TEXTURE_DPI': 1031.0, 'SAMPLES': 20, 'ROTATE_X': -30, 'ROTATE_Y': 10, 'ROTATE_Z': 10, 'VIEW': 'bottom', 'DIFFUSE_RADIUS': 6.0, 'DIFFUSE_HEIGHT': 10.0, 'DIFFUSE_LIGHT': 0.4, 'ACCENT_LIGHT': 0.1, 'SPOT_LIGHT': 2.0, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating PCB 3D model PCB3D Blender format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/PCB2Blender_ToolsOptions.html + +# The lighting setup allows for even, diffuse background lighting as well as +# a focused light for shadows/depth. The eight area lights form a ring around +# the top of the board, while the spot light illuminates from behind and to the +# right of the camera. The accent lights illuminate from behind the board at a +# low angle to help light up solder pads. +# +# For top/bottom renders that look directly down at the board, set 2.0 +# to 0.1 and @ADIFFUSE_LIGHT@ to 0.7. For angle renders, start with 2.0 +# set to 2.0 and 0.4 at 0.4. Some experimentation, including with +# the ring radius and height, may be required to get good results. + +kibot: + version: 1 + +outputs: + - name: blender_3d_angled_bottom + output_id: blender_3d_angled_bottom + comment: 'High Quality 3D Render (Angled Bottom)' + type: blender_export + category: 'renders' + dir: 'renders' + options: + auto_camera_z_axis_factor: 1.1 + pcb_import: + enhance_materials: true + texture_dpi: 1031.0 + + pcb3d: + download: true + download_lcsc: true + dnf_filter: + - _kibom_dnf_Config + + render_options: + auto_crop: true + transparent_background: true + samples: 20 + resolution_x: 1500 + resolution_y: 1500 + + point_of_view: + rotate_x: -30 + rotate_y: 10 + rotate_z: 10 + view: bottom + + outputs: + - type: render + output: '%f-%I%v.%x' + + light: + - name: spot + energy: 2.0 + pos_x: -size*3.33 + pos_y: size*3.33 + pos_z: size*5 + type: POINT + + - name: accent_1 + energy: 0.1 + pos_x: -size*2 + pos_y: size*6 + pos_z: size*3 + type: AREA + + - name: accent_2 + energy: 0.1 + pos_x: size*2 + pos_y: size*6 + pos_z: size*3 + type: AREA + + - name: ring_1 + energy: 0.4 + pos_x: size*6.0 + pos_y: 0 + pos_z: size*10.0 + type: AREA + + - name: ring_2 + energy: 0.4 + pos_x: -size*6.0 + pos_y: 0 + pos_z: size*10.0 + type: AREA + + - name: ring_3 + energy: 0.4 + pos_x: 0 + pos_y: size*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_4 + energy: 0.4 + pos_x: 0 + pos_y: -size*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_5 + energy: 0.4 + pos_x: size*0.71*6.0 + pos_y: size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_6 + energy: 0.4 + pos_x: -size*0.71*6.0 + pos_y: size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_7 + energy: 0.4 + pos_x: size*0.71*6.0 + pos_y: -size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + - name: ring_8 + energy: 0.4 + pos_x: -size*0.71*6.0 + pos_y: -size*0.71*6.0 + pos_z: size*10.0 + type: AREA + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `blender_3d_angled_bottom` (blender_export) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_blender.yaml`: ['blender_3d_angled_bottom'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'step', 'COMMENT': 'PCB 3D model in STEP format', 'DIR': 'models', 'FORMAT': 'step', 'INCLUDE_SILKSCREEN': False, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'step', 'COMMENT': 'PCB 3D model in STEP format', 'FORMAT': 'step', 'DIR': 'models', 'INCLUDE_SILKSCREEN': False, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'step', 'COMMENT': 'PCB 3D model in STEP format', 'DIR': 'models', 'FORMAT': 'step', 'INCLUDE_SILKSCREEN': False, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'step', 'COMMENT': 'PCB 3D model in STEP format', 'DIR': 'models', 'FORMAT': 'step', 'INCLUDE_SILKSCREEN': False, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> step () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> PCB 3D model in STEP format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> models () (kibot - config_reader.py:78) +DEBUG:- Replacing @FORMAT@ -> step () (kibot - config_reader.py:78) +DEBUG:- Replacing @INCLUDE_SILKSCREEN@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @INCLUDE_SOLDERMASK@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @INCLUDE_TRACKS@ -> false () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'step', 'COMMENT': 'PCB 3D model in STEP format', 'DIR': 'models', 'FORMAT': 'step', 'INCLUDE_SILKSCREEN': False, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating PCB 3D models in various formats (Requires KiCad 9+) +# https://kibot.readthedocs.io/en/latest/configuration/outputs/export_3d.html + +kibot: + version: 1 + +outputs: + - name: step + output_id: step + comment: 'PCB 3D model in STEP format' + type: export_3d + category: 'models' + dir: 'models' + options: + format: step + origin: drill + output: '%f-%I%v.%x' + + # Configurable for higher-fidelity outputs (e.g. gITF) + include_silkscreen: false + include_soldermask: false + include_tracks: false + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `step` (export_3d) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_3d_model.yaml`: ['step'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'step', 'COMMENT': 'PCB 3D model in STEP format', 'DIR': 'models', 'FORMAT': 'step', 'INCLUDE_SILKSCREEN': False, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'glb', 'COMMENT': 'PCB 3D model in GLB/gITF format', 'FORMAT': 'glb', 'DIR': 'models', 'INCLUDE_SILKSCREEN': True, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'glb', 'COMMENT': 'PCB 3D model in GLB/gITF format', 'DIR': 'models', 'FORMAT': 'glb', 'INCLUDE_SILKSCREEN': True, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'glb', 'COMMENT': 'PCB 3D model in GLB/gITF format', 'DIR': 'models', 'FORMAT': 'glb', 'INCLUDE_SILKSCREEN': True, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> glb () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> PCB 3D model in GLB/gITF format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> models () (kibot - config_reader.py:78) +DEBUG:- Replacing @FORMAT@ -> glb () (kibot - config_reader.py:78) +DEBUG:- Replacing @INCLUDE_SILKSCREEN@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @INCLUDE_SOLDERMASK@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @INCLUDE_TRACKS@ -> false () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'glb', 'COMMENT': 'PCB 3D model in GLB/gITF format', 'DIR': 'models', 'FORMAT': 'glb', 'INCLUDE_SILKSCREEN': True, 'INCLUDE_SOLDERMASK': False, 'INCLUDE_TRACKS': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating PCB 3D models in various formats (Requires KiCad 9+) +# https://kibot.readthedocs.io/en/latest/configuration/outputs/export_3d.html + +kibot: + version: 1 + +outputs: + - name: glb + output_id: glb + comment: 'PCB 3D model in GLB/gITF format' + type: export_3d + category: 'models' + dir: 'models' + options: + format: glb + origin: drill + output: '%f-%I%v.%x' + + # Configurable for higher-fidelity outputs (e.g. gITF) + include_silkscreen: true + include_soldermask: false + include_tracks: false + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `glb` (export_3d) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_3d_model.yaml`: ['glb'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'gbr_gerbers', 'COMMENT': 'Gerbers in GBR format', 'DIR': 'mfg/fab/gerbers', 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'gbr_gerbers', 'COMMENT': 'Gerbers in GBR format', 'DIR': 'mfg/fab/gerbers'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'gbr_gerbers', 'COMMENT': 'Gerbers in GBR format', 'DIR': 'mfg/fab/gerbers', 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'gbr_gerbers', 'COMMENT': 'Gerbers in GBR format', 'DIR': 'mfg/fab/gerbers', 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> gbr_gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Gerbers in GBR format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/fab/gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @PLOT_REFS@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @PROTEL_EXTENSIONS@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @SUBTRACT_MASK@ -> false () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'gbr_gerbers', 'COMMENT': 'Gerbers in GBR format', 'DIR': 'mfg/fab/gerbers', 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Gerber files +# https://kibot.readthedocs.io/en/latest/configuration/outputs/gerber.html + +kibot: + version: 1 + +outputs: + - name: gbr_gerbers + comment: 'Gerbers in GBR format' + type: gerber + category: 'mfg/fab/gerbers' + dir: 'mfg/fab/gerbers' + layers: ['copper', 'Edge.Cuts', 'F.Silkscreen', 'F.Mask', 'F.Paste', 'B.Silkscreen', 'B.Mask', 'B.Paste'] + options: + subtract_mask_from_silk: false + plot_footprint_refs: true + plot_footprint_values: false + create_gerber_job_file: false + use_aux_axis_as_origin: true + use_protel_extensions: false + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `gbr_gerbers` (gerber) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_gerber.yaml`: ['gbr_gerbers'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'drl_excellon', 'COMMENT': 'Drill in Excellon format', 'DIR': 'mfg/fab/gerbers', 'GENERATE_DRILL': True, 'PTH_NPTH': False, 'MAP_FORMAT': 'None', 'METRIC_UNITS': True} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'drl_excellon', 'COMMENT': 'Drill in Excellon format', 'DIR': 'mfg/fab/gerbers', 'METRIC_UNITS': True} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'drl_excellon', 'COMMENT': 'Drill in Excellon format', 'DIR': 'mfg/fab/gerbers', 'GENERATE_DRILL': True, 'PTH_NPTH': False, 'MAP_FORMAT': 'None', 'METRIC_UNITS': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'drl_excellon', 'COMMENT': 'Drill in Excellon format', 'DIR': 'mfg/fab/gerbers', 'GENERATE_DRILL': True, 'PTH_NPTH': False, 'MAP_FORMAT': 'None', 'METRIC_UNITS': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> drl_excellon () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Drill in Excellon format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/fab/gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @GENERATE_DRILL@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @PTH_NPTH@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @MAP_FORMAT@ -> None () (kibot - config_reader.py:78) +DEBUG:- Replacing @METRIC_UNITS@ -> true () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'drl_excellon', 'COMMENT': 'Drill in Excellon format', 'DIR': 'mfg/fab/gerbers', 'GENERATE_DRILL': True, 'PTH_NPTH': False, 'MAP_FORMAT': 'None', 'METRIC_UNITS': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating drill Gerber files +# https://kibot.readthedocs.io/en/latest/configuration/outputs/excellon.html + +kibot: + version: 1 + +outputs: + - name: drl_excellon + comment: 'Drill in Excellon format' + type: excellon + category: 'mfg/fab/gerbers' + dir: 'mfg/fab/gerbers' + options: + generate_drill_files: true + pth_and_npth_single_file: false + pth_id: '-pth' + npth_id: '-npth' + map: 'None' + metric_units: true + use_aux_axis_as_origin: true + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `drl_excellon` (excellon) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_excellon_drill.yaml`: ['drl_excellon'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'zip_odb', 'COMMENT': 'ODB++ in ZIP format', 'DIR': 'mfg/fab'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'zip_odb', 'COMMENT': 'ODB++ in ZIP format', 'DIR': 'mfg/fab'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'zip_odb', 'COMMENT': 'ODB++ in ZIP format', 'DIR': 'mfg/fab', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'zip_odb', 'COMMENT': 'ODB++ in ZIP format', 'DIR': 'mfg/fab', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> zip_odb () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> ODB++ in ZIP format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/fab () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'zip_odb', 'COMMENT': 'ODB++ in ZIP format', 'DIR': 'mfg/fab', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating ODB++ files +# https://kibot.readthedocs.io/en/latest/configuration/outputs/odb.html + +kibot: + version: 1 + +outputs: + - name: zip_odb + comment: 'ODB++ in ZIP format' + type: odb + category: 'mfg/fab' + dir: 'mfg/fab' + options: + dnf_filter: _kibom_dnf_Config + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `zip_odb` (odb) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_odb.yaml`: ['zip_odb'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'drl_excellon', 'COMMENT': 'Drill in Excellon format', 'DIR': 'mfg/fab/gerbers', 'GENERATE_DRILL': True, 'PTH_NPTH': False, 'MAP_FORMAT': 'None', 'METRIC_UNITS': True} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'pdf_drill_map', 'COMMENT': 'Drill Map in PDF format', 'DIR': 'mfg/fab/gerbers', 'METRIC_UNITS': True, 'GENERATE_DRILL': False, 'PTH_NPTH': False, 'MAP_FORMAT': 'pdf'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'pdf_drill_map', 'COMMENT': 'Drill Map in PDF format', 'DIR': 'mfg/fab/gerbers', 'GENERATE_DRILL': False, 'PTH_NPTH': False, 'MAP_FORMAT': 'pdf', 'METRIC_UNITS': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pdf_drill_map', 'COMMENT': 'Drill Map in PDF format', 'DIR': 'mfg/fab/gerbers', 'GENERATE_DRILL': False, 'PTH_NPTH': False, 'MAP_FORMAT': 'pdf', 'METRIC_UNITS': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> pdf_drill_map () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Drill Map in PDF format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/fab/gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @GENERATE_DRILL@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @PTH_NPTH@ -> false () (kibot - config_reader.py:78) +DEBUG:- Replacing @MAP_FORMAT@ -> pdf () (kibot - config_reader.py:78) +DEBUG:- Replacing @METRIC_UNITS@ -> true () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pdf_drill_map', 'COMMENT': 'Drill Map in PDF format', 'DIR': 'mfg/fab/gerbers', 'GENERATE_DRILL': False, 'PTH_NPTH': False, 'MAP_FORMAT': 'pdf', 'METRIC_UNITS': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating drill Gerber files +# https://kibot.readthedocs.io/en/latest/configuration/outputs/excellon.html + +kibot: + version: 1 + +outputs: + - name: pdf_drill_map + comment: 'Drill Map in PDF format' + type: excellon + category: 'mfg/fab/gerbers' + dir: 'mfg/fab/gerbers' + options: + generate_drill_files: false + pth_and_npth_single_file: false + pth_id: '-pth' + npth_id: '-npth' + map: 'pdf' + metric_units: true + use_aux_axis_as_origin: true + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `pdf_drill_map` (excellon) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_excellon_drill.yaml`: ['pdf_drill_map'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'csv_drill_table', 'COMMENT': 'Drill Table in CSV format', 'DIR': 'mfg/fab/tables', 'PTH_NPTH': 'yes', 'GROUP_ROUND_SLOTS': True} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'csv_drill_table', 'COMMENT': 'Drill Table in CSV format', 'DIR': 'mfg/fab/drill-tables', 'PTH_NPTH': 'no'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'csv_drill_table', 'COMMENT': 'Drill Table in CSV format', 'DIR': 'mfg/fab/drill-tables', 'PTH_NPTH': 'no', 'GROUP_ROUND_SLOTS': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_drill_table', 'COMMENT': 'Drill Table in CSV format', 'DIR': 'mfg/fab/drill-tables', 'PTH_NPTH': 'no', 'GROUP_ROUND_SLOTS': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> csv_drill_table () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Drill Table in CSV format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/fab/drill-tables () (kibot - config_reader.py:78) +DEBUG:- Replacing @PTH_NPTH@ -> no () (kibot - config_reader.py:78) +DEBUG:- Replacing @GROUP_ROUND_SLOTS@ -> true () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_drill_table', 'COMMENT': 'Drill Table in CSV format', 'DIR': 'mfg/fab/drill-tables', 'PTH_NPTH': 'no', 'GROUP_ROUND_SLOTS': True, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Drill Tables +# https://kibot.readthedocs.io/en/latest/configuration/outputs/excellon.html + +kibot: + version: 1 + +outputs: + - name: csv_drill_table + comment: 'Drill Table in CSV format' + type: excellon + category: 'mfg/fab/drill-tables' + dir: 'mfg/fab/drill-tables' + options: + generate_drill_files: false + table: + unify_pth_and_npth: 'no' + group_slots_and_round_holes: true + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `csv_drill_table` (excellon) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_csv_drill_table.yaml`: ['csv_drill_table'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'csv_position', 'COMMENT': 'Position file in CSV format', 'DIR': 'Manufacturing/Assembly'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'csv_position', 'COMMENT': 'Position file in CSV format', 'DIR': 'mfg/assembly'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'csv_position', 'COMMENT': 'Position file in CSV format', 'DIR': 'mfg/assembly', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_position', 'COMMENT': 'Position file in CSV format', 'DIR': 'mfg/assembly', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> csv_position () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Position file in CSV format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/assembly () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_position', 'COMMENT': 'Position file in CSV format', 'DIR': 'mfg/assembly', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Position file in CSV format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/position.html + +kibot: + version: 1 + +outputs: + - name: csv_position + comment: 'Position file in CSV format' + type: position + category: 'mfg/assembly' + dir: 'mfg/assembly' + options: + format: 'CSV' + only_smd: false + include_virtual: false + output: '%f-CPL%I%v.%x' + separate_files_for_front_and_back: false + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `csv_position` (position) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_csv_position.yaml`: ['csv_position'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'csv_testpoints', 'COMMENT': 'Testpoint report in CSV format', 'DIR': 'Testing/Testpoints', 'SUFFIX': '', 'EXCLUDE_FILTER': 'only_testpoints'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'csv_testpoints', 'COMMENT': 'Testpoint report in CSV format', 'DIR': 'test/testpoints', 'EXCLUDE_FILTER': 'only_testpoints'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'csv_testpoints', 'COMMENT': 'Testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '', 'EXCLUDE_FILTER': 'only_testpoints', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_testpoints', 'COMMENT': 'Testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '', 'EXCLUDE_FILTER': 'only_testpoints', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> csv_testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Testpoint report in CSV format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> test/testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @SUFFIX@ -> () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_FILTER@ -> only_testpoints () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_testpoints', 'COMMENT': 'Testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '', 'EXCLUDE_FILTER': 'only_testpoints', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating CSV Tespoints +# https://kibot.readthedocs.io/en/latest/configuration/outputs/bom.html + +kibot: + version: 1 + +outputs: + - name: csv_testpoints + comment: 'Testpoint report in CSV format' + type: bom + category: 'test/testpoints' + dir: 'test/testpoints' + options: + output: '%f-testpoints%I%v.%x' + csv: + hide_pcb_info: True + hide_stats_info: True + pre_transform: ['_kicost_rename'] + exclude_filter: 'only_testpoints' + dnf_filter: '_null' + exclude_marked_in_sch: false + group_fields: [] + sort_style: ref + use_aux_axis_as_origin: true + ignore_dnf: false + format: CSV + footprint_type_values: 'SMT,THRU,' + columns: + - field: References + name: Testpoint Ref. + - field: Net Name + name: Net + - field: Net Class + - field: Footprint X + name: X + - field: Footprint Y + name: Y + - field: Footprint Side + name: Side + - field: Footprint Type + name: Pad Type + - field: Value + - field: Footprint + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `csv_testpoints` (bom) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_csv_testpoints.yaml`: ['csv_testpoints'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'csv_testpoints', 'COMMENT': 'Testpoint report in CSV format', 'DIR': 'Testing/Testpoints', 'SUFFIX': '', 'EXCLUDE_FILTER': 'only_testpoints'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'csv_testpoints_top', 'COMMENT': 'Top testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '-top', 'EXCLUDE_FILTER': 'only_testpoints_top'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'csv_testpoints_top', 'COMMENT': 'Top testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '-top', 'EXCLUDE_FILTER': 'only_testpoints_top', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_testpoints_top', 'COMMENT': 'Top testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '-top', 'EXCLUDE_FILTER': 'only_testpoints_top', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> csv_testpoints_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Top testpoint report in CSV format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> test/testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @SUFFIX@ -> -top () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_FILTER@ -> only_testpoints_top () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_testpoints_top', 'COMMENT': 'Top testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '-top', 'EXCLUDE_FILTER': 'only_testpoints_top', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating CSV Tespoints +# https://kibot.readthedocs.io/en/latest/configuration/outputs/bom.html + +kibot: + version: 1 + +outputs: + - name: csv_testpoints_top + comment: 'Top testpoint report in CSV format' + type: bom + category: 'test/testpoints' + dir: 'test/testpoints' + options: + output: '%f-testpoints-top%I%v.%x' + csv: + hide_pcb_info: True + hide_stats_info: True + pre_transform: ['_kicost_rename'] + exclude_filter: 'only_testpoints_top' + dnf_filter: '_null' + exclude_marked_in_sch: false + group_fields: [] + sort_style: ref + use_aux_axis_as_origin: true + ignore_dnf: false + format: CSV + footprint_type_values: 'SMT,THRU,' + right_digits: 2 + columns: + - field: References + name: Ref. + - field: Net Label + name: Net + - field: Footprint X + name: X [mm] + - field: Footprint Y + name: Y [mm] + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `csv_testpoints_top` (bom) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_csv_testpoints_simple.yaml`: ['csv_testpoints_top'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'csv_testpoints', 'COMMENT': 'Testpoint report in CSV format', 'DIR': 'Testing/Testpoints', 'SUFFIX': '', 'EXCLUDE_FILTER': 'only_testpoints'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'csv_testpoints_bottom', 'COMMENT': 'Bottom testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '-bottom', 'EXCLUDE_FILTER': 'only_testpoints_bottom'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'csv_testpoints_bottom', 'COMMENT': 'Bottom testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '-bottom', 'EXCLUDE_FILTER': 'only_testpoints_bottom', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_testpoints_bottom', 'COMMENT': 'Bottom testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '-bottom', 'EXCLUDE_FILTER': 'only_testpoints_bottom', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> csv_testpoints_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Bottom testpoint report in CSV format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> test/testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @SUFFIX@ -> -bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_FILTER@ -> only_testpoints_bottom () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_testpoints_bottom', 'COMMENT': 'Bottom testpoint report in CSV format', 'DIR': 'test/testpoints', 'SUFFIX': '-bottom', 'EXCLUDE_FILTER': 'only_testpoints_bottom', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating CSV Tespoints +# https://kibot.readthedocs.io/en/latest/configuration/outputs/bom.html + +kibot: + version: 1 + +outputs: + - name: csv_testpoints_bottom + comment: 'Bottom testpoint report in CSV format' + type: bom + category: 'test/testpoints' + dir: 'test/testpoints' + options: + output: '%f-testpoints-bottom%I%v.%x' + csv: + hide_pcb_info: True + hide_stats_info: True + pre_transform: ['_kicost_rename'] + exclude_filter: 'only_testpoints_bottom' + dnf_filter: '_null' + exclude_marked_in_sch: false + group_fields: [] + sort_style: ref + use_aux_axis_as_origin: true + ignore_dnf: false + format: CSV + footprint_type_values: 'SMT,THRU,' + right_digits: 2 + columns: + - field: References + name: Ref. + - field: Net Label + name: Net + - field: Footprint X + name: X [mm] + - field: Footprint Y + name: Y [mm] + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `csv_testpoints_bottom` (bom) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_csv_testpoints_simple.yaml`: ['csv_testpoints_bottom'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'pdf_fabrication', 'COMMENT': 'Fabrication document in PDF format', 'DIR': 'mfg/fab', 'DOC_TITLE': 'Fabrication', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS': '${KIPRJMOD}/templates/Asymworks_PCB.kicad_wks', 'SCALING': 1.0, 'FAB_EXCLUDE_FILTER': 'only_testpoints', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'PTH_NPTH': 'yes', 'GROUP_ROUND_SLOTS': True, 'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table', 'NAME_DRILL_TABLE': 'csv_drill_table'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'pdf_fabrication', 'COMMENT': 'Fabrication document in PDF format', 'DIR': 'mfg/fab', 'SHEET_WKS': 'templates/Asymworks_PCB.kicad_wks', 'SCALING': 1, 'PTH_NPTH': 'no', 'FAB_EXCLUDE_FILTER': 'only_testpoints', 'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table', 'NAME_DRILL_TABLE': 'csv_drill_table'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'pdf_fabrication', 'COMMENT': 'Fabrication document in PDF format', 'DIR': 'mfg/fab', 'DOC_TITLE': 'Fabrication', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS': 'templates/Asymworks_PCB.kicad_wks', 'SCALING': 1, 'FAB_EXCLUDE_FILTER': 'only_testpoints', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'PTH_NPTH': 'no', 'GROUP_ROUND_SLOTS': True, 'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table', 'NAME_DRILL_TABLE': 'csv_drill_table', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pdf_fabrication', 'COMMENT': 'Fabrication document in PDF format', 'DIR': 'mfg/fab', 'DOC_TITLE': 'Fabrication', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS': 'templates/Asymworks_PCB.kicad_wks', 'SCALING': 1, 'FAB_EXCLUDE_FILTER': 'only_testpoints', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'PTH_NPTH': 'no', 'GROUP_ROUND_SLOTS': True, 'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table', 'NAME_DRILL_TABLE': 'csv_drill_table', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> pdf_fabrication () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Fabrication document in PDF format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/fab () (kibot - config_reader.py:78) +DEBUG:- Replacing @DOC_TITLE@ -> Fabrication () (kibot - config_reader.py:78) +DEBUG:- Replacing @COLOR_THEME@ -> Altium_Theme () (kibot - config_reader.py:78) +DEBUG:- Replacing @SHEET_WKS@ -> templates/Asymworks_PCB.kicad_wks () (kibot - config_reader.py:78) +DEBUG:- Replacing @SCALING@ -> 1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @FAB_EXCLUDE_FILTER@ -> only_testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_DRILL_MAP@ -> DrillMap () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_TP_LIST_TOP@ -> F.TestPointList () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_TP_LIST_BOTTOM@ -> B.TestPointList () (kibot - config_reader.py:78) +DEBUG:- Replacing @PTH_NPTH@ -> no () (kibot - config_reader.py:78) +DEBUG:- Replacing @GROUP_ROUND_SLOTS@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME_TP_TOP@ -> csv_testpoints_top () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME_TP_BOTTOM@ -> csv_testpoints_bottom () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME_IMPEDANCE_TABLE@ -> csv_impedance_table () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME_DRILL_TABLE@ -> csv_drill_table () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pdf_fabrication', 'COMMENT': 'Fabrication document in PDF format', 'DIR': 'mfg/fab', 'DOC_TITLE': 'Fabrication', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS': 'templates/Asymworks_PCB.kicad_wks', 'SCALING': 1, 'FAB_EXCLUDE_FILTER': 'only_testpoints', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'PTH_NPTH': 'no', 'GROUP_ROUND_SLOTS': True, 'NAME_TP_TOP': 'csv_testpoints_top', 'NAME_TP_BOTTOM': 'csv_testpoints_bottom', 'NAME_IMPEDANCE_TABLE': 'csv_impedance_table', 'NAME_DRILL_TABLE': 'csv_drill_table', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Fabrication Document in PDF format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/pcb_print.html + +kibot: + version: 1 + +outputs: + - name: pdf_fabrication + comment: 'Fabrication document in PDF format' + type: pcb_print + category: 'mfg/fab' + dir: 'mfg/fab' + options: + colored_pads: false + colored_vias: false + color_theme: 'Altium_Theme' + output: '%f-fabrication%I%v.%x' + format: 'PDF' + title: 'Fabrication Document' + realistic_solder_mask: false + dpi: 1200 + dnf_filter: _kibom_dnf_Config + frame_plot_mechanism: 'internal' + sheet_reference_layout: 'templates/Asymworks_PCB.kicad_wks' + drill: + unify_pth_and_npth: 'no' + group_slots_and_round_holes: true + include_table: + outputs: + - name: 'csv_testpoints_top' + text_alignment: 'left' + invert_columns_order: false + border_width: 0.4 + header_rule_width: 0.2 + horizontal_rule_width: 0 + vertical_rule_width: 0.2 + top_rule_width: 0.2 + bottom_rule_width: 0.2 + column_spacing: 2 + force_font_width: 1.27 # mm + + - name: 'csv_testpoints_bottom' + text_alignment: 'right' + invert_columns_order: true + border_width: 0.4 + header_rule_width: 0.2 + horizontal_rule_width: 0 + vertical_rule_width: 0.2 + top_rule_width: 0.2 + bottom_rule_width: 0.2 + column_spacing: 2 + force_font_width: 1.27 # mm + + - name: 'csv_impedance_table' + text_alignment: 'left' + invert_columns_order: false + border_width: 0.4 + header_rule_width: 0.2 + horizontal_rule_width: 0 + vertical_rule_width: 0.2 + top_rule_width: 0.2 + bottom_rule_width: 0.2 + row_spacing: 3 + column_spacing: 2 + row_spacing: 3 + + - name: 'csv_drill_table' + text_alignment: 'left' + invert_columns_order: false + border_width: 0.4 + header_rule_width: 0.2 + horizontal_rule_width: 0 + vertical_rule_width: 0.2 + top_rule_width: 0.2 + bottom_rule_width: 0.2 + row_spacing: 3 + column_spacing: 2 + force_font_width: 1 # mm + + pages: + - scaling: 1 + title: 'Fabrication' + sheet: 'Top Fabrication (Scale 1:1)' + layer_var: 'Top Fabrication (Scale 1:1)' + sheet_reference_color: '#000000' + colored_holes: true + holes_color: "#FFFFFF" + layers: + - layer: Edge.Cuts + color: '#000000' + - layer: F.Cu + color: '#F2F2F2' + - layer: F.Mask + color: '#E2E2E2' + - layer: F.Paste + color: '#E2E2E2' + - layer: F.Silkscreen + color: '#DBDBDB' + - layer: F.Fab + plot_footprint_refs: false + plot_footprint_values: false + color: '#818181' + - layer: F.Dimensions + color: '#000000' + + - scaling: 1 + mirror: true + mirror_pcb_text: false + title: 'Fabrication' + sheet: 'Bottom Fabrication (Scale 1:1)' + layer_var: 'Bottom Fabrication (Scale 1:1)' + sheet_reference_color: '#000000' + colored_holes: true + holes_color: "#FFFFFF" + layers: + - layer: Edge.Cuts + color: '#000000' + - layer: B.Cu + color: '#F2F2F2' + - layer: B.Mask + color: '#E2E2E2' + - layer: B.Paste + color: '#E2E2E2' + - layer: B.Silkscreen + color: '#DBDBDB' + - layer: B.Fab + plot_footprint_refs: false + plot_footprint_values: false + color: '#818181' + - layer: B.Dimensions + color: '#000000' + + - scaling: 1 + title: 'Fabrication' + sheet: 'Drill Drawing (%lp)' + layer_var: 'Drill Drawing %lp (Scale 1:1)' + sheet_reference_color: '#000000' + colored_holes: true + holes_color: "#FFFFFF" + repeat_for_layer: 'DrillMap' + repeat_layers: 'drill_pairs' + layers: + - layer: 'DrillMap' + color: '#000000' + - layer: 'Edge.Cuts' + color: '#000000' + + - scaling: 1 + title: 'Fabrication' + sheet: 'Top Test Points (Scale 1:1)' + layer_var: 'Top Test Points (Scale 1:1)' + sheet_reference_color: '#000000' + colored_holes: true + holes_color: "#FFFFFF" + layers: + - layer: Edge.Cuts + color: '#000000' + - layer: F.Cu + color: '#E5E5E5' + - layer: F.Mask + color: '#CECECE' + - layer: F.Paste + color: '#CECECE' + - layer: F.Silkscreen + color: '#C7C7C7' + - layer: F.Fab + exclude_filter: 'only_testpoints' + plot_footprint_values: false + sketch_pads_on_fab_layers: false + color: '#E10000' + - layer: 'F.TestPointList' + color: '#000000' + + - scaling: 1 + mirror : true + mirror_pcb_text: true + title: 'Fabrication' + sheet: 'Bottom Test Points (Scale 1:1)' + layer_var: 'Bottom Test Points (Scale 1:1)' + sheet_reference_color: '#000000' + colored_holes: true + holes_color: "#FFFFFF" + layers: + - layer: Edge.Cuts + color: '#000000' + - layer: B.Cu + color: '#E5E5E5' + - layer: B.Mask + color: '#CECECE' + - layer: B.Paste + color: '#CECECE' + - layer: B.Silkscreen + color: '#C7C7C7' + - layer: B.Fab + exclude_filter: 'only_testpoints' + plot_footprint_values: false + sketch_pads_on_fab_layers: false + color: '#0B00CC' + - layer: 'B.TestPointList' + color: '#000000' + + - scaling: 1 + sheet: '%ln (Scale 1:1)' + layer_var: '%ln (Scale 1:1)' + title: 'Fabrication' + sheet_reference_color: '#000000' + colored_holes: true + holes_color: "#FFFFFF" + repeat_for_layer: 'F.Cu' + repeat_layers: 'copper' + layers: + - layer: Edge.Cuts + color: '#000000' + - layer: 'F.Cu' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `pdf_fabrication` (pcb_print) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_pdf_fabrication.yaml`: ['pdf_fabrication'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'pdf_assembly', 'COMMENT': 'Assembly document in PDF format', 'DIR': 'mfg/assembly', 'DOC_TITLE': 'Assembly', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS': '${KIPRJMOD}/templates/Asymworks_PCB.kicad_wks', 'SCALING': 1.0, 'FAB_EXCLUDE_FILTER': 'exclude_testpoints', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'NAME_COMP_COUNT': 'csv_comp_count'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'pdf_assembly', 'COMMENT': 'Assembly document in PDF format', 'DIR': 'mfg/assembly', 'SHEET_WKS': 'templates/Asymworks_PCBA.kicad_wks', 'SCALING': 1, 'FAB_EXCLUDE_FILTER': 'exclude_testpoints', 'NAME_COMP_COUNT': 'csv_comp_count'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'pdf_assembly', 'COMMENT': 'Assembly document in PDF format', 'DIR': 'mfg/assembly', 'DOC_TITLE': 'Assembly', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS': 'templates/Asymworks_PCBA.kicad_wks', 'SCALING': 1, 'FAB_EXCLUDE_FILTER': 'exclude_testpoints', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'NAME_COMP_COUNT': 'csv_comp_count', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pdf_assembly', 'COMMENT': 'Assembly document in PDF format', 'DIR': 'mfg/assembly', 'DOC_TITLE': 'Assembly', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS': 'templates/Asymworks_PCBA.kicad_wks', 'SCALING': 1, 'FAB_EXCLUDE_FILTER': 'exclude_testpoints', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'NAME_COMP_COUNT': 'csv_comp_count', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> pdf_assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Assembly document in PDF format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @DOC_TITLE@ -> Assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @COLOR_THEME@ -> Altium_Theme () (kibot - config_reader.py:78) +DEBUG:- Replacing @SHEET_WKS@ -> templates/Asymworks_PCBA.kicad_wks () (kibot - config_reader.py:78) +DEBUG:- Replacing @SCALING@ -> 1 () (kibot - config_reader.py:78) +DEBUG:- Replacing @FAB_EXCLUDE_FILTER@ -> exclude_testpoints () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_TITLE_PAGE@ -> AssyTitlePage () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_ASSEMBLY_TEXT_TOP@ -> F.AssemblyText () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_ASSEMBLY_TEXT_BOTTOM@ -> B.AssemblyText () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_DNP_CROSS_TOP@ -> F.DNP () (kibot - config_reader.py:78) +DEBUG:- Replacing @LAYER_DNP_CROSS_BOTTOM@ -> B.DNP () (kibot - config_reader.py:78) +DEBUG:- Replacing @NAME_COMP_COUNT@ -> csv_comp_count () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'pdf_assembly', 'COMMENT': 'Assembly document in PDF format', 'DIR': 'mfg/assembly', 'DOC_TITLE': 'Assembly', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS': 'templates/Asymworks_PCBA.kicad_wks', 'SCALING': 1, 'FAB_EXCLUDE_FILTER': 'exclude_testpoints', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'NAME_COMP_COUNT': 'csv_comp_count', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Assembly Document in PDF format +# https://kibot.readthedocs.io/en/latest/configuration/outputs/pcb_print.html + +kibot: + version: 1 + +outputs: + - name: pdf_assembly + comment: 'Assembly document in PDF format' + type: pcb_print + category: 'mfg/assembly' + dir: 'mfg/assembly' + options: + colored_vias: false + colored_pads: false + color_theme: 'Altium_Theme' + output: '%f-assembly%I%v.%x' + format: 'PDF' + title: 'Assembly Document' + realistic_solder_mask: false + dpi: 1200 + dnf_filter: _kibom_dnf_Config + # dnf_filter: '_null' + sheet_reference_layout: 'templates/Asymworks_PCBA.kicad_wks' + include_table: + outputs: + - name: 'csv_comp_count' + text_alignment: 'left' + invert_columns_order: false + border_width: 0.4 + header_rule_width: 0.2 + horizontal_rule_width: 0 + vertical_rule_width: 0 + top_rule_width: 0 + bottom_rule_width: 0 + row_spacing: 3 + column_spacing: 2 + pages: + - scaling: 1 + layer_var: '' + title: 'Assembly' + sheet: Top/Bottom View + sheet_reference_color: '#000000' + layers: + - layer: 'AssyTitlePage' + color: '#000000' + + - scaling: 1 + layer_var: "Top Assembly (Scale 1:1)" + title: 'Assembly' + sheet: Top Assembly (Scale 1:1) + sheet_reference_color: '#000000' + colored_holes: true + holes_color: "#FFFFFF" + layers: + - layer: Edge.Cuts + color: '#000000' + - layer: F.Cu + color: '#EEDAB5' + - layer: F.Mask + color: '#B9B9B9' + - layer: F.Paste + color: '#E1A98E' + - layer: F.Silkscreen + color: '#DB9DE1' + - layer: F.Fab + exclude_filter: 'exclude_testpoints' + color: '#744679' + - layer: 'F.AssemblyText' + color: '#000000' + - layer: 'F.DNP' + color: '#D63034' + + - scaling: 1 + layer_var: "Bottom Assembly (Scale 1:1)" + mirror: true + mirror_pcb_text: false + title: 'Assembly' + sheet: Bottom Assembly (Scale 1:1) + sheet_reference_color: '#000000' + colored_holes: true + holes_color: "#FFFFFF" + layers: + - layer: Edge.Cuts + color: '#000000' + - layer: B.Cu + color: '#D5DBF4' + - layer: B.Mask + color: '#B9B9B9' + - layer: B.Paste + color: '#BCB9DD' + - layer: B.Silkscreen + color: '#DB9DE1' + - layer: B.Fab + exclude_filter: 'exclude_testpoints' + color: '#400080' + - layer: 'B.AssemblyText' + color: '#000000' + - layer: 'B.DNP' + color: '#D63034' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `pdf_assembly` (pcb_print) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_pdf_assembly.yaml`: ['pdf_assembly'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'zip_compress_fab', 'COMMENT': 'Generates a ZIP file with gerbers, drill and fabrication document', 'DIR': 'Manufacturing/Fabrication', 'GERBER_OUTPUT': 'gbr_gerbers', 'DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DRILL_OUTPUT': 'drl_excellon', 'FABRICATION_OUTPUT': 'pdf_fabrication'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'zip_compress_fab', 'COMMENT': 'Generates a ZIP file with gerbers, drill and fabrication document', 'DIR': 'mfg/fab', 'DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DRILL_OUTPUT': 'drl_excellon', 'FABRICATION_OUTPUT': 'pdf_fabrication'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'zip_compress_fab', 'COMMENT': 'Generates a ZIP file with gerbers, drill and fabrication document', 'DIR': 'mfg/fab', 'GERBER_OUTPUT': 'gbr_gerbers', 'DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DRILL_OUTPUT': 'drl_excellon', 'FABRICATION_OUTPUT': 'pdf_fabrication', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'zip_compress_fab', 'COMMENT': 'Generates a ZIP file with gerbers, drill and fabrication document', 'DIR': 'mfg/fab', 'GERBER_OUTPUT': 'gbr_gerbers', 'DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DRILL_OUTPUT': 'drl_excellon', 'FABRICATION_OUTPUT': 'pdf_fabrication', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> zip_compress_fab () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Generates a ZIP file with gerbers, drill and fabrication document () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/fab () (kibot - config_reader.py:78) +DEBUG:- Replacing @GERBER_OUTPUT@ -> gbr_gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @DRILL_MAP_OUTPUT@ -> pdf_drill_map () (kibot - config_reader.py:78) +DEBUG:- Replacing @DRILL_OUTPUT@ -> drl_excellon () (kibot - config_reader.py:78) +DEBUG:- Replacing @FABRICATION_OUTPUT@ -> pdf_fabrication () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'zip_compress_fab', 'COMMENT': 'Generates a ZIP file with gerbers, drill and fabrication document', 'DIR': 'mfg/fab', 'GERBER_OUTPUT': 'gbr_gerbers', 'DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DRILL_OUTPUT': 'drl_excellon', 'FABRICATION_OUTPUT': 'pdf_fabrication', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for compressing Fabrication files to a ZIP archive +# https://kibot.readthedocs.io/en/latest/configuration/outputs/compress.html + +kibot: + version: 1 + +outputs: + - name: zip_compress_fab + comment: 'Generates a ZIP file with gerbers, drill and fabrication document' + type: compress + category: 'mfg/fab' + dir: 'mfg/fab' + options: + output: '%f-GERBERS%I%v.%x' + move_files: false + files: + - from_output: gbr_gerbers + dest: '/' + - from_output: pdf_drill_map + dest: '/' + - from_output: drl_excellon + dest: '/' + - from_output: pdf_fabrication + dest: '/' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `zip_compress_fab` (compress) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_compress_fab.yaml`: ['zip_compress_fab'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'gbr_gerbers', 'COMMENT': 'Gerbers in GBR format', 'DIR': 'mfg/fab/gerbers', 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': True, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'jlcpcb_gerbers', 'COMMENT': 'Gerbers in GBR format for JLCPCB', 'DIR': 'mfg/jlcpcb/gerbers'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'jlcpcb_gerbers', 'COMMENT': 'Gerbers in GBR format for JLCPCB', 'DIR': 'mfg/jlcpcb/gerbers', 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': True, 'SUBTRACT_MASK': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'jlcpcb_gerbers', 'COMMENT': 'Gerbers in GBR format for JLCPCB', 'DIR': 'mfg/jlcpcb/gerbers', 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': True, 'SUBTRACT_MASK': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> jlcpcb_gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Gerbers in GBR format for JLCPCB () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/jlcpcb/gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @PLOT_REFS@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @PROTEL_EXTENSIONS@ -> true () (kibot - config_reader.py:78) +DEBUG:- Replacing @SUBTRACT_MASK@ -> false () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'jlcpcb_gerbers', 'COMMENT': 'Gerbers in GBR format for JLCPCB', 'DIR': 'mfg/jlcpcb/gerbers', 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': True, 'SUBTRACT_MASK': False, 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Gerber files +# https://kibot.readthedocs.io/en/latest/configuration/outputs/gerber.html + +kibot: + version: 1 + +outputs: + - name: jlcpcb_gerbers + comment: 'Gerbers in GBR format for JLCPCB' + type: gerber + category: 'mfg/jlcpcb/gerbers' + dir: 'mfg/jlcpcb/gerbers' + layers: ['copper', 'Edge.Cuts', 'F.Silkscreen', 'F.Mask', 'F.Paste', 'B.Silkscreen', 'B.Mask', 'B.Paste'] + options: + subtract_mask_from_silk: false + plot_footprint_refs: true + plot_footprint_values: false + create_gerber_job_file: false + use_aux_axis_as_origin: true + use_protel_extensions: true + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `jlcpcb_gerbers` (gerber) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_gerber.yaml`: ['jlcpcb_gerbers'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'jlcpcb_fabpack', 'COMMENT': 'Generates a ZIP file with gerbers and drill for JLCPCB', 'DIR': 'mfg/fab', 'GERBER_OUTPUT': 'jlcpcb_gerbers', 'DRILL_OUTPUT': 'drl_excellon'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'jlcpcb_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'jlcpcb_fabpack', 'COMMENT': 'Zipped Fabpack for JLCPCB', 'DIR': 'mfg/jlcpcb', 'DRILL_OUTPUT': 'drl_excellon'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'jlcpcb_fabpack', 'COMMENT': 'Zipped Fabpack for JLCPCB', 'DIR': 'mfg/jlcpcb', 'GERBER_OUTPUT': 'jlcpcb_gerbers', 'DRILL_OUTPUT': 'drl_excellon', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'jlcpcb_fabpack', 'COMMENT': 'Zipped Fabpack for JLCPCB', 'DIR': 'mfg/jlcpcb', 'GERBER_OUTPUT': 'jlcpcb_gerbers', 'DRILL_OUTPUT': 'drl_excellon', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> jlcpcb_fabpack () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Zipped Fabpack for JLCPCB () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/jlcpcb () (kibot - config_reader.py:78) +DEBUG:- Replacing @GERBER_OUTPUT@ -> jlcpcb_gerbers () (kibot - config_reader.py:78) +DEBUG:- Replacing @DRILL_OUTPUT@ -> drl_excellon () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'jlcpcb_fabpack', 'COMMENT': 'Zipped Fabpack for JLCPCB', 'DIR': 'mfg/jlcpcb', 'GERBER_OUTPUT': 'jlcpcb_gerbers', 'DRILL_OUTPUT': 'drl_excellon', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for compressing Fabrication files to a ZIP archive for JLCPCB +# https://kibot.readthedocs.io/en/latest/configuration/outputs/compress.html + +kibot: + version: 1 + +outputs: + - name: jlcpcb_fabpack + comment: 'Zipped Fabpack for JLCPCB' + type: compress + category: 'mfg/jlcpcb' + dir: 'mfg/jlcpcb' + options: + output: '%f-Fabpack%I%v.%x' + move_files: false + files: + - from_output: jlcpcb_gerbers + dest: '/' + - from_output: drl_excellon + dest: '/' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `jlcpcb_fabpack` (compress) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_jlcpcb_fabpack.yaml`: ['jlcpcb_fabpack'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'jlcpcb_bom', 'COMMENT': 'Bill of Materials for JLCPCB', 'DIR': 'mfg/assembly/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'jlcpcb_bom', 'COMMENT': 'Bill of Materials for JLCPCB', 'DIR': 'mfg/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'jlcpcb_bom', 'COMMENT': 'Bill of Materials for JLCPCB', 'DIR': 'mfg/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'jlcpcb_bom', 'COMMENT': 'Bill of Materials for JLCPCB', 'DIR': 'mfg/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> jlcpcb_bom () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Bill of Materials for JLCPCB () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/jlcpcb () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_FILTER@ -> only_lcsc_parts () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'jlcpcb_bom', 'COMMENT': 'Bill of Materials for JLCPCB', 'DIR': 'mfg/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Bill of Materials in CSV format for JLCPCB +# https://kibot.readthedocs.io/en/latest/configuration/outputs/bom.html + +kibot: + version: 1 + +outputs: +- name: jlcpcb_bom + comment: 'Bill of Materials for JLCPCB' + type: bom + category: 'mfg/jlcpcb' + dir: 'mfg/jlcpcb' + options: + exclude_filter: only_lcsc_parts + format: CSV + csv: + hide_pcb_info: true + hide_stats_info: true + quote_all: true + columns: + - field: Value + name: Comment + - field: References + name: Designator + - Footprint + - field: _field_lcsc_part + name: 'LCSC Part #' + ref_separator: ',' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `jlcpcb_bom` (bom) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_jlcpcb_bom.yaml`: ['jlcpcb_bom'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'jlcpcb_cpl', 'COMMENT': 'Component Placement for JLCPCB', 'DIR': 'mfg/assembly/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'jlcpcb_cpl', 'COMMENT': 'Component Placement File for JLCPCB', 'DIR': 'mfg/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'jlcpcb_cpl', 'COMMENT': 'Component Placement File for JLCPCB', 'DIR': 'mfg/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'jlcpcb_cpl', 'COMMENT': 'Component Placement File for JLCPCB', 'DIR': 'mfg/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> jlcpcb_cpl () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Component Placement File for JLCPCB () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/jlcpcb () (kibot - config_reader.py:78) +DEBUG:- Replacing @EXCLUDE_FILTER@ -> only_lcsc_parts () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'jlcpcb_cpl', 'COMMENT': 'Component Placement File for JLCPCB', 'DIR': 'mfg/jlcpcb', 'EXCLUDE_FILTER': 'only_lcsc_parts', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating Position file in CSV format for JLCPCB +# https://kibot.readthedocs.io/en/latest/configuration/outputs/position.html + +kibot: + version: 1 + +filters: + - name: fix_rotation + comment: Adjust rotation for JLCPCB + type: rot_footprint + negative_bottom: false + mirror_bottom: true + +outputs: + - name: jlcpcb_cpl + comment: 'Component Placement File for JLCPCB' + type: position + category: 'mfg/jlcpcb' + dir: 'mfg/jlcpcb' + options: + format: 'CSV' + output: '%f-cpl%I%v.%x' + separate_files_for_front_and_back: false + units: millimeters + only_smd: true + include_virtual: false + exclude_filter: only_lcsc_parts + pre_transform: '_rot_footprint_jlcpcb' + columns: + - id: Ref + name: Designator + - Val + - Package + - id: PosX + name: "Mid X" + - id: PosY + name: "Mid Y" + - id: Rot + name: Rotation + - id: Side + name: Layer + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `jlcpcb_cpl` (position) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_jlcpcb_cpl.yaml`: ['jlcpcb_cpl'] (kibot - config_reader.py:361) +DEBUG:Parsing filter `fix_rotation` (rot_footprint) (kibot - config_reader.py:252) +DEBUG:Configuring from default: rotations -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: offsets -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: rotations_and_offsets -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: rot_fields -> ['JLCPCB Rotation Offset', 'JLCRotOffset'] (kibot - optionable.py:598) +DEBUG:Configuring from default: offset_fields -> ['JLCPCB Position Offset', 'JLCPosOffset'] (kibot - optionable.py:598) +DEBUG:Final rotations list: (kibot - fil_rot_footprint.py:196) +DEBUG:footprint matches re.compile('^R_Array_Convex_') => rotate 90.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^R_Array_Concave_') => rotate 90.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SOT-143') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SOT-223') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SOT-23') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SOT-353') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SOT-363') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SOT-89') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^D_SOT-23') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^TSOT-23') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^CP_EIA-') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^CP_Elec_') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^C_Elec_') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^QFN-') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^(.*?_|V)?QFN-(16|20|24|28|40)(-|_|$)') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^DFN-') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^LQFP-') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^TQFP-') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SOP-(?!(18_|4_))') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^MSOP-') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^TSSOP-') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^HTSSOP-') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SSOP-') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SOIC-') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SO-') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SOIC127P798X216-8N') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^VSSOP-8_3.0x3.0mm_P0.65mm') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^VSSOP-8_') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^VSSOP-10_') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^VSON-8_') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^TSOP-6') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^UDFN-10') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^USON-10') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^TDSON-8-1') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^LED_WS2812B_PLCC4') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^LED_WS2812B-2020_PLCC4_2.0x2.0mm') => rotate 90.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^Bosch_LGA-') => rotate 90.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^PowerPAK_SO-8_Single') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^PUIAudio_SMT_0825_S_4_R*') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^USB_C_Receptacle_HRO_TYPE-C-31-M-12*') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^ESP32-W') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SW_DIP_SPSTx01_Slide_Copal_CHS-01B_W7.62mm_P1.27mm') => rotate -180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^BatteryHolder_Keystone_1060_1x2032') => rotate -180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^Relay_DPDT_Omron_G6K-2F-Y') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^RP2040-QFN-56') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^TO-277') => rotate 90.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SW_SPST_B3') => rotate 90.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^Transformer_Ethernet_Pulse_HX0068ANL') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^JST_GH_SM') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^JST_PH_S') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^Diodes_PowerDI3333-8') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^Quectel_L80-R') => rotate 270.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^SC-74-6') => rotate 180.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^PinHeader_2x05_P1\\.27mm_Vertical') => rotate -90.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:footprint matches re.compile('^PinHeader_2x03_P1\\.27mm_Vertical') => rotate -90.0 move 0.0,0.0 (kibot - fil_rot_footprint.py:198) +DEBUG:Final offsets list: (kibot - fil_rot_footprint.py:199) +DEBUG:footprint matches re.compile('^USB_C_Receptacle_XKB_U262-16XN-4BVC11') => rotate 0.0 move 0.0,-1.44 (kibot - fil_rot_footprint.py:201) +DEBUG:footprint matches re.compile('^PinHeader_2x05_P1\\.27mm_Vertical') => rotate 0.0 move -2.54,-0.635 (kibot - fil_rot_footprint.py:201) +DEBUG:footprint matches re.compile('^PinHeader_2x03_P1\\.27mm_Vertical') => rotate 0.0 move -1.27,-0.635 (kibot - fil_rot_footprint.py:201) +DEBUG:Filters loaded from `kibot/yaml/kibot_out_jlcpcb_cpl.yaml`: dict_keys(['fix_rotation']) (kibot - config_reader.py:408) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'csv_report', 'COMMENT': 'Report in CSV format', 'DIR': 'mfg', 'OUTPUT_ID': '', 'TEMPLATE': 'total_components'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'csv_comp_count', 'COMMENT': 'Component report (count) in CSV format', 'DIR': 'mfg/assembly', 'OUTPUT_ID': 'components_count', 'TEMPLATE': 'total_components'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'csv_comp_count', 'COMMENT': 'Component report (count) in CSV format', 'DIR': 'mfg/assembly', 'OUTPUT_ID': 'components_count', 'TEMPLATE': 'total_components', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_comp_count', 'COMMENT': 'Component report (count) in CSV format', 'DIR': 'mfg/assembly', 'OUTPUT_ID': 'components_count', 'TEMPLATE': 'total_components', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> csv_comp_count () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Component report (count) in CSV format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @OUTPUT_ID@ -> components_count () (kibot - config_reader.py:78) +DEBUG:- Replacing @TEMPLATE@ -> total_components () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_comp_count', 'COMMENT': 'Component report (count) in CSV format', 'DIR': 'mfg/assembly', 'OUTPUT_ID': 'components_count', 'TEMPLATE': 'total_components', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for CSV Report +# https://kibot.readthedocs.io/en/latest/configuration/outputs/report.html + +kibot: + version: 1 + +outputs: + - name: csv_comp_count + comment: 'Component report (count) in CSV format' + type: report + category: 'mfg/assembly' + dir: 'mfg/assembly' + output_id: components_count + options: + output: '%f-%I%v.csv' + template: total_components + exclude_filter: '_mechanical' + csv_remove_leading_spaces: true + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `csv_comp_count` (report) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_csv_report.yaml`: ['csv_comp_count'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'csv_report', 'COMMENT': 'Report in CSV format', 'DIR': 'mfg', 'OUTPUT_ID': '', 'TEMPLATE': 'total_components'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'csv_impedance_table', 'COMMENT': 'Impedance table in CSV format', 'DIR': 'mfg/fab', 'OUTPUT_ID': 'impedance_table', 'TEMPLATE': 'notes/impedance_table.txt'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'csv_impedance_table', 'COMMENT': 'Impedance table in CSV format', 'DIR': 'mfg/fab', 'OUTPUT_ID': 'impedance_table', 'TEMPLATE': 'notes/impedance_table.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_impedance_table', 'COMMENT': 'Impedance table in CSV format', 'DIR': 'mfg/fab', 'OUTPUT_ID': 'impedance_table', 'TEMPLATE': 'notes/impedance_table.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> csv_impedance_table () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Impedance table in CSV format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/fab () (kibot - config_reader.py:78) +DEBUG:- Replacing @OUTPUT_ID@ -> impedance_table () (kibot - config_reader.py:78) +DEBUG:- Replacing @TEMPLATE@ -> notes/impedance_table.txt () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'csv_impedance_table', 'COMMENT': 'Impedance table in CSV format', 'DIR': 'mfg/fab', 'OUTPUT_ID': 'impedance_table', 'TEMPLATE': 'notes/impedance_table.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for CSV Report +# https://kibot.readthedocs.io/en/latest/configuration/outputs/report.html + +kibot: + version: 1 + +outputs: + - name: csv_impedance_table + comment: 'Impedance table in CSV format' + type: report + category: 'mfg/fab' + dir: 'mfg/fab' + output_id: impedance_table + options: + output: '%f-%I%v.csv' + template: notes/impedance_table.txt + exclude_filter: '_mechanical' + csv_remove_leading_spaces: true + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `csv_impedance_table` (report) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_csv_report.yaml`: ['csv_impedance_table'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'txt_fabrication_notes', 'COMMENT': 'Report', 'DIR': 'mfg', 'OUTPUT_ID': '_notes', 'TEMPLATE': 'notes/fabrication_notes.txt'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'txt_schematic_notes', 'COMMENT': 'Schematic notes in TXT format', 'DIR': 'schematic', 'OUTPUT_ID': 'schematic_notes', 'TEMPLATE': 'notes/schematic_notes.txt'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'txt_schematic_notes', 'COMMENT': 'Schematic notes in TXT format', 'DIR': 'schematic', 'OUTPUT_ID': 'schematic_notes', 'TEMPLATE': 'notes/schematic_notes.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'txt_schematic_notes', 'COMMENT': 'Schematic notes in TXT format', 'DIR': 'schematic', 'OUTPUT_ID': 'schematic_notes', 'TEMPLATE': 'notes/schematic_notes.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> txt_schematic_notes () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Schematic notes in TXT format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> schematic () (kibot - config_reader.py:78) +DEBUG:- Replacing @OUTPUT_ID@ -> schematic_notes () (kibot - config_reader.py:78) +DEBUG:- Replacing @TEMPLATE@ -> notes/schematic_notes.txt () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'txt_schematic_notes', 'COMMENT': 'Schematic notes in TXT format', 'DIR': 'schematic', 'OUTPUT_ID': 'schematic_notes', 'TEMPLATE': 'notes/schematic_notes.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for TXT Report (e.g. Fabrication/Assembly notes) +# https://kibot.readthedocs.io/en/latest/configuration/outputs/report.html + +kibot: + version: 1 + +outputs: + - name: txt_schematic_notes + comment: 'Schematic notes in TXT format' + type: report + category: 'schematic' + dir: 'schematic' + output_id: schematic_notes + options: + output: '%f-%I%v.txt' + template: notes/schematic_notes.txt + exclude_filter: '_mechanical' + mm_digits: 3 + display_trailing_zeros: True + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `txt_schematic_notes` (report) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_txt_report.yaml`: ['txt_schematic_notes'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'txt_fabrication_notes', 'COMMENT': 'Report', 'DIR': 'mfg', 'OUTPUT_ID': '_notes', 'TEMPLATE': 'notes/fabrication_notes.txt'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'txt_fabrication_notes', 'COMMENT': 'Fabrication notes in TXT format', 'DIR': 'mfg/fab', 'OUTPUT_ID': 'fabrication_notes', 'TEMPLATE': 'notes/fabrication_notes.txt'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'txt_fabrication_notes', 'COMMENT': 'Fabrication notes in TXT format', 'DIR': 'mfg/fab', 'OUTPUT_ID': 'fabrication_notes', 'TEMPLATE': 'notes/fabrication_notes.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'txt_fabrication_notes', 'COMMENT': 'Fabrication notes in TXT format', 'DIR': 'mfg/fab', 'OUTPUT_ID': 'fabrication_notes', 'TEMPLATE': 'notes/fabrication_notes.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> txt_fabrication_notes () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Fabrication notes in TXT format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/fab () (kibot - config_reader.py:78) +DEBUG:- Replacing @OUTPUT_ID@ -> fabrication_notes () (kibot - config_reader.py:78) +DEBUG:- Replacing @TEMPLATE@ -> notes/fabrication_notes.txt () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'txt_fabrication_notes', 'COMMENT': 'Fabrication notes in TXT format', 'DIR': 'mfg/fab', 'OUTPUT_ID': 'fabrication_notes', 'TEMPLATE': 'notes/fabrication_notes.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for TXT Report (e.g. Fabrication/Assembly notes) +# https://kibot.readthedocs.io/en/latest/configuration/outputs/report.html + +kibot: + version: 1 + +outputs: + - name: txt_fabrication_notes + comment: 'Fabrication notes in TXT format' + type: report + category: 'mfg/fab' + dir: 'mfg/fab' + output_id: fabrication_notes + options: + output: '%f-%I%v.txt' + template: notes/fabrication_notes.txt + exclude_filter: '_mechanical' + mm_digits: 3 + display_trailing_zeros: True + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `txt_fabrication_notes` (report) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_txt_report.yaml`: ['txt_fabrication_notes'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'txt_fabrication_notes', 'COMMENT': 'Report', 'DIR': 'mfg', 'OUTPUT_ID': '_notes', 'TEMPLATE': 'notes/fabrication_notes.txt'} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'txt_assembly_notes', 'COMMENT': 'Assembly notes in TXT format', 'DIR': 'mfg/assembly', 'OUTPUT_ID': 'assembly_notes', 'TEMPLATE': 'notes/assembly_notes.txt'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'txt_assembly_notes', 'COMMENT': 'Assembly notes in TXT format', 'DIR': 'mfg/assembly', 'OUTPUT_ID': 'assembly_notes', 'TEMPLATE': 'notes/assembly_notes.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'txt_assembly_notes', 'COMMENT': 'Assembly notes in TXT format', 'DIR': 'mfg/assembly', 'OUTPUT_ID': 'assembly_notes', 'TEMPLATE': 'notes/assembly_notes.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> txt_assembly_notes () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> Assembly notes in TXT format () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> mfg/assembly () (kibot - config_reader.py:78) +DEBUG:- Replacing @OUTPUT_ID@ -> assembly_notes () (kibot - config_reader.py:78) +DEBUG:- Replacing @TEMPLATE@ -> notes/assembly_notes.txt () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'txt_assembly_notes', 'COMMENT': 'Assembly notes in TXT format', 'DIR': 'mfg/assembly', 'OUTPUT_ID': 'assembly_notes', 'TEMPLATE': 'notes/assembly_notes.txt', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for TXT Report (e.g. Fabrication/Assembly notes) +# https://kibot.readthedocs.io/en/latest/configuration/outputs/report.html + +kibot: + version: 1 + +outputs: + - name: txt_assembly_notes + comment: 'Assembly notes in TXT format' + type: report + category: 'mfg/assembly' + dir: 'mfg/assembly' + output_id: assembly_notes + options: + output: '%f-%I%v.txt' + template: notes/assembly_notes.txt + exclude_filter: '_mechanical' + mm_digits: 3 + display_trailing_zeros: True + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `txt_assembly_notes` (report) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_txt_report.yaml`: ['txt_assembly_notes'] (kibot - config_reader.py:361) +DEBUG:Found local definitions (kibot - config_reader.py:648) +DEBUG:- Local definitions: {'NAME': 'panel', 'COMMENT': 'PCB Panelization', 'CATEGORY': 'Panels', 'DIR': 'fab/panel', 'CONFIG': '', 'TITLE': ''} (kibot - config_reader.py:658) +DEBUG:- Current definitions: {'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl', 'NAME': 'panel_801', 'DIR': 'panels/panel-800', 'CONFIG': 'panels/panel-800.json', 'TITLE': 'Panel Fabrication (Panel -800)'} (kibot - config_reader.py:659) +DEBUG:- Updated definitions: {'NAME': 'panel_801', 'COMMENT': 'PCB Panelization', 'CATEGORY': 'Panels', 'DIR': 'panels/panel-800', 'CONFIG': 'panels/panel-800.json', 'TITLE': 'Panel Fabrication (Panel -800)', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:662) +DEBUG:Applying preprocessor definitions (kibot - config_reader.py:667) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'panel_801', 'COMMENT': 'PCB Panelization', 'CATEGORY': 'Panels', 'DIR': 'panels/panel-800', 'CONFIG': 'panels/panel-800.json', 'TITLE': 'Panel Fabrication (Panel -800)', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:- Replacing @NAME@ -> panel_801 () (kibot - config_reader.py:78) +DEBUG:- Replacing @COMMENT@ -> PCB Panelization () (kibot - config_reader.py:78) +DEBUG:- Replacing @DIR@ -> panels/panel-800 () (kibot - config_reader.py:78) +DEBUG:- Replacing @CONFIG@ -> panels/panel-800.json () (kibot - config_reader.py:78) +DEBUG:- Replacing @TITLE@ -> Panel Fabrication (Panel -800) () (kibot - config_reader.py:78) +DEBUG:- Applying CLI definitions: {'RELEASE_STATE': 'DRAFT', 'REVISION': 'NO_TAG+ (Unreleased)'} (kibot - config_reader.py:674) +DEBUG:- Applying collected definitions: {'NAME': 'panel_801', 'COMMENT': 'PCB Panelization', 'CATEGORY': 'Panels', 'DIR': 'panels/panel-800', 'CONFIG': 'panels/panel-800.json', 'TITLE': 'Panel Fabrication (Panel -800)', 'PROJECT_CODE': 'P99', 'ASSEMBLY_NUMBER': 'A99-9000', 'ASSEMBLY_NAME': 'Assembly Name', 'GIT_URL': '/jkrauss/Test_4', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_SCH': 'S99-9000', 'DWG_TITLE_SCH': 'Schematic, Assembly Name', 'DWG_NUMBER_PCB': 'P99-9000', 'DWG_TITLE_PCB': 'PCB, Assembly Name', 'DWG_TITLE_ASSY': 'PCB Assembly, Assembly Name', 'PANEL_800_OUTPUT': 'panel_801', 'PANEL_800_CONFIG': '@PANELS_DIR@/panel-800.json', 'PANEL_800_TITLE': 'Panel Fabrication (Panel -800)', 'CHECK_ZONE_FILLS': False, 'STACKUP_TABLE_NOTE': 'external layer thicknesses are specified after plating', 'IPN_FIELD': 'Asymworks IPN', 'MPN_FIELD': 'Manufacturer PN', 'MAN_FIELD': 'Manufacturer', 'GROUP_ROUND_SLOTS': True, 'GROUP_PTH_NPTH': 'no', 'GROUP_PTH_NPTH_DRL': False, 'PLOT_REFS': True, 'PROTEL_EXTENSIONS': False, 'SUBTRACT_MASK': False, 'EXCELLON_METRIC_UNITS': True, 'TP_EXCLUDE_REFS': '[MB*]', 'COLOR_THEME': 'Altium_Theme', 'SHEET_WKS_SCH': 'templates/Asymworks_SCH.kicad_wks', 'SHEET_WKS_PCB': 'templates/Asymworks_PCB.kicad_wks', 'SHEET_WKS_ASSY': 'templates/Asymworks_PCBA.kicad_wks', 'FAB_SCALING': 1, 'ASSEMBLY_SCALING': 1, 'RENDER_DNF_FILTER': '_kibom_dnf_Config', '3D_VIEWER_ROT_X': 2, '3D_VIEWER_ROT_Y': -1, '3D_VIEWER_ROT_Z': 1, '3D_VIEWER_ZOOM': -1, 'KEY_COLOR': '#FF00FF', 'BLENDER_SAMPLES': 20, 'BLENDER_ROT_X': 30, 'BLENDER_ROT_Y': 10, 'BLENDER_ROT_Z': 10, 'BLENDER_RESOLUTION_X': 1500, 'BLENDER_RESOLUTION_Y': 1500, 'BLENDER_TEXTURE_DPI': 1031.0, 'BLENDER_DIFFUSE_HEIGHT': 10.0, 'BLENDER_DIFFUSE_RADIUS': 6.0, 'OUTPUT_DIR': './', 'REPORT_DIR': 'reports', 'SCHEMATIC_DIR': 'schematic', 'MANUFACTURING_DIR': 'mfg', 'ASSEMBLY_DIR': '@MANUFACTURING_DIR@/assembly', 'FABRICATION_DIR': '@MANUFACTURING_DIR@/fab', 'GERBERS_DIR': '@FABRICATION_DIR@/gerbers', 'FAB_DRILL_TABLES_DIR': '@FABRICATION_DIR@/drill-tables', 'TESTING_DIR': 'test', 'TESTPOINTS_DIR': '@TESTING_DIR@/testpoints', 'RESOURCES_DIR': 'kibot', 'MODELS_DIR': 'models', 'NOTES_DIR': 'notes', 'RENDER_DIR': 'renders', 'REPORT_TEMPLATE_DIR': '@RESOURCES_DIR@/templates', 'SCRIPTS_DIR': '@RESOURCES_DIR@/scripts', 'PANELS_DIR': 'panels', 'PANEL_FAB_DIR': '@FABRICATION_DIR@/panels', 'JLCPCB_FAB_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_ASSY_DIR': '@MANUFACTURING_DIR@/jlcpcb', 'JLCPCB_GERBERS_DIR': '@MANUFACTURING_DIR@/jlcpcb/gerbers', 'LAYER_TITLE_PAGE': 'AssyTitlePage', 'LAYER_DNP_TOP': 'F.DNP', 'LAYER_DNP_BOTTOM': 'B.DNP', 'LAYER_DRILL_MAP': 'DrillMap', 'LAYER_TP_LIST_TOP': 'F.TestPointList', 'LAYER_TP_LIST_BOTTOM': 'B.TestPointList', 'LAYER_ASSEMBLY_TEXT_TOP': 'F.AssemblyText', 'LAYER_ASSEMBLY_TEXT_BOTTOM': 'B.AssemblyText', 'LAYER_DNP_CROSS_TOP': 'F.DNP', 'LAYER_DNP_CROSS_BOTTOM': 'B.DNP', 'FILT_FIELD_RENAME': 'field_rename', 'FILT_LCSC_PARTS': 'only_lcsc_parts', 'FILT_TP_ONLY': 'only_testpoints', 'FILT_TP_EXCLUDE': 'exclude_testpoints', 'FILT_TP_TOP_ONLY': 'only_testpoints_top', 'FILT_TP_BOTTOM_ONLY': 'only_testpoints_bottom', 'NETLIST_OUTPUT': 'netlist', 'PDF_SCHEMATIC_OUTPUT': 'pdf_schematic', 'PDF_FABRICATION_OUTPUT': 'pdf_fabrication', 'PDF_ASSEMBLY_OUTPUT': 'pdf_assembly', 'CSV_BOM_OUTPUT': 'csv_bom', 'HTML_IBOM_OUTPUT': 'html_bom_interactive', 'HTML_BOM_OUTPUT': 'html_bom', 'CSV_COMP_COUNT_OUPUT': 'csv_comp_count', 'CSV_IMPEDANCE_TABLE_OUTPUT': 'csv_impedance_table', 'GERBER_OUTPUT': 'gbr_gerbers', 'ODB_OUTPUT': 'zip_odb', 'EXCELLON_DRILL_OUTPUT': 'drl_excellon', 'PDF_DRILL_MAP_OUTPUT': 'pdf_drill_map', 'DXF_DRILL_MAP_OUTPUT': 'dxf_drill_map', 'CSV_DRILL_TABLE_OUTPUT': 'csv_drill_table', 'CSV_POS_OUTPUT': 'csv_position', 'CSV_TP_OUTPUT': 'csv_testpoints', 'CSV_TP_TOP_OUTPUT': 'csv_testpoints_top', 'CSV_TP_BOTTOM_OUTPUT': 'csv_testpoints_bottom', 'ZIP_COMPRESS_FAB_OUTPUT': 'zip_compress_fab', 'STEP_OUTPUT': 'step', 'GLB_OUTPUT': 'glb', 'PCBDRAW_2D_TOP_PCB_OUTPUT': 'pcbdraw_top', 'PCBDRAW_2D_BOT_PCB_OUTPUT': 'pcbdraw_bottom', 'PNG_3D_VIEWER_TOP': 'png_3d_viewer_top', 'PNG_3D_VIEWER_BOT': 'png_3d_viewer_bottom', 'PNG_3D_VIEWER_ANGLED_TOP': 'png_3d_viewer_angled_top', 'PNG_3D_VIEWER_ANGLED_BOT': 'png_3d_viewer_angled_bottom', 'BLENDER_3D_TOP': 'blender_3d_top', 'BLENDER_3D_BOT': 'blender_3d_bottom', 'BLENDER_3D_ANGLED_TOP': 'blender_3d_angled_top', 'BLENDER_3D_ANGLED_BOT': 'blender_3d_angled_bottom', 'TXT_SCH_NOTES_OUTPUT': 'txt_schematic_notes', 'TXT_FAB_NOTES_OUTPUT': 'txt_fabrication_notes', 'TXT_ASSY_NOTES_OUTPUT': 'txt_assembly_notes', 'HTML_KIRI_OUTPUT': 'html_kiri', 'HTML_NAV_RES_OUTPUT': 'html_navigate_results', 'JLCPCB_GERBER_OUTPUT': 'jlcpcb_gerbers', 'JLCPCB_FABPACK_OUTPUT': 'jlcpcb_fabpack', 'JLCPCB_BOM_OUTPUT': 'jlcpcb_bom', 'JLCPCB_CPL_OUTPUT': 'jlcpcb_cpl'} (kibot - config_reader.py:677) +DEBUG:YAML after expanding definitions: +# KiBot output for generating PCB Panels with KiKit +# https://kibot.readthedocs.io/en/latest/configuration/outputs/panelize.html + +kibot: + version: 1 + +outputs: + - name: panel_801 + output_id: panel_801 + comment: 'PCB Panelization' + type: panelize + category: 'panels/panel-800' + dir: 'panels/panel-800' + options: + configs: panels/panel-800.json + output: '%f-%I%v.%x' + create_preview: true + title: 'Panel Fabrication (Panel -800)' + + (kibot - config_reader.py:683) +DEBUG:Pre-parsing output options for `panel_801` (panelize) (kibot - config_reader.py:169) +DEBUG:Outputs loaded from `kibot/yaml/kibot_out_panelize.yaml`: ['panel_801'] (kibot - config_reader.py:361) +DEBUG:Configuring variants (kibot - config_reader.py:493) +WARNING:(W178) `update_xml` preflight redefined. Want to use `merge_pre`? (kibot.pre_base - pre_base.py:97) +DEBUG:Adding groups: {} (kibot - registrable.py:268) +DEBUG:Parsing global options: {} (kibot - config_reader.py:301) +DEBUG:Global options + imported: {'resources_dir': 'kibot', 'out_dir': './', 'dnp_cross_top_layer': 'F.DNP', 'dnp_cross_bottom_layer': 'B.DNP', 'disable_kicad_cross_on_fab': True, 'extra_pth_drill': 0, 'filters': []} (kibot - config_reader.py:310) +DEBUG:Looking for stack-up information in the PCB (kibot.globals - globals.py:500) +DEBUG:- Found stack-up information (kibot.globals - globals.py:516) +DEBUG:- F.SilkS color: White (kibot.globals - globals.py:471) +DEBUG:- F.Mask color: Green (kibot.globals - globals.py:479) +DEBUG:- B.Mask color: Green (kibot.globals - globals.py:483) +DEBUG:- B.SilkS color: White (kibot.globals - globals.py:475) +DEBUG:- Copper finish: ENIG (kibot.globals - globals.py:531) +DEBUG:- Impedance controlled: no (kibot.globals - globals.py:543) +DEBUG:- PCB Material/s: FR4 (kibot.globals - globals.py:552) +DEBUG:- Copper thickness: 35 / 15 (kibot.globals - globals.py:554) +DEBUG:Configuring from default: aliases_for_3d_models -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: extra_os -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: environment -> (kibot - optionable.py:362) +DEBUG:Configuring from default: field_tolerance -> ['tolerance', 'tol'] (kibot - optionable.py:598) +DEBUG:Configuring from default: field_voltage -> ['voltage', 'v'] (kibot - optionable.py:598) +DEBUG:Configuring from default: field_package -> ['package', 'pkg'] (kibot - optionable.py:598) +DEBUG:Configuring from default: field_temp_coef -> ['temp_coef', 'tmp_coef'] (kibot - optionable.py:598) +DEBUG:Configuring from default: field_power -> ['power', 'pow'] (kibot - optionable.py:598) +DEBUG:Configuring from default: field_current -> ['current', 'i'] (kibot - optionable.py:598) +DEBUG:Configuring from default: layer_defaults -> [] (kibot - optionable.py:362) +DEBUG:Adding groups: {'preprocess_group': ['netlist', 'txt_schematic_notes', 'txt_fabrication_notes', 'txt_assembly_notes', 'tables'], 'draft_group': ['netlist', 'txt_schematic_notes', 'pdf_schematic', 'csv_bom', 'html_bom'], 'all_group': ['bom', 'renders', 'models', 'fab', 'jlcpcb', 'panels', 'assembly', 'pdf_schematic', 'html_navigate_results'], 'all_group_kiri': ['bom', 'renders', 'models', 'fab', 'jlcpcb', 'panels', 'assembly', 'pdf_schematic', 'html_kiri', 'html_navigate_results'], 'panel_fab_jlcpcb_group': [], 'bom': ['csv_bom', 'html_bom', 'html_bom_interactive'], 'renders': ['pcbdraw_top', 'pcbdraw_bottom', 'blender_3d_top', 'blender_3d_bottom', 'blender_3d_angled_top', 'blender_3d_angled_bottom'], 'models': ['step', 'glb'], 'fab': ['gbr_gerbers', 'drl_excellon', 'zip_odb', 'pdf_drill_map', 'pdf_fabrication', 'zip_compress_fab'], 'tables': ['csv_comp_count', 'csv_impedance_table', 'csv_drill_table', 'testpoints'], 'testpoints': ['csv_testpoints', 'csv_testpoints_top', 'csv_testpoints_bottom'], 'jlcpcb': ['jlcpcb_gerbers', 'jlcpcb_fabpack', 'jlcpcb_bom', 'jlcpcb_cpl'], 'assembly': ['csv_position', 'pdf_assembly'], 'panels': ['panel_801']} (kibot - registrable.py:268) +Installing font Arial Bold.ttf +Installing font Arial.ttf +Installing font Inconsolata.ttf +Installing font Arial Narrow.ttf +Installing font Arial Narrow Bold.ttf +DEBUG:- Executing: fc-cache (kibot - kiplot.py:160) +Installing color Altium_Theme.json +DEBUG:Starting outputs for board /workspace/jkrauss/Test_6/Test_6.kicad_pcb (kibot - kiplot.py:667) +DEBUG:Outputs before groups expansion: ['preprocess_group'] (kibot - kiplot.py:686) +DEBUG:Outputs after groups expansion: ['netlist', 'txt_schematic_notes', 'txt_fabrication_notes', 'txt_assembly_notes', 'csv_comp_count', 'csv_impedance_table', 'csv_drill_table', 'csv_testpoints', 'csv_testpoints_top', 'csv_testpoints_bottom'] (kibot - kiplot.py:691) +DEBUG:Skipping `pdf_schematic` output (kibot - kiplot.py:712) +DEBUG:Skipping `csv_bom` output (kibot - kiplot.py:712) +DEBUG:Skipping `html_bom` output (kibot - kiplot.py:712) +DEBUG:Skipping `html_bom_interactive` output (kibot - kiplot.py:712) +DEBUG:Skipping `html_kiri` output (kibot - kiplot.py:712) +DEBUG:Skipping `html_navigate_results` output (kibot - kiplot.py:712) +DEBUG:Skipping `pcbdraw_top` output (kibot - kiplot.py:712) +DEBUG:Skipping `pcbdraw_bottom` output (kibot - kiplot.py:712) +DEBUG:Skipping `png_3d_viewer_top` output (kibot - kiplot.py:712) +DEBUG:Skipping `png_3d_viewer_bottom` output (kibot - kiplot.py:712) +DEBUG:Skipping `png_3d_viewer_angled_top` output (kibot - kiplot.py:712) +DEBUG:Skipping `png_3d_viewer_angled_bottom` output (kibot - kiplot.py:712) +DEBUG:Skipping `blender_3d_top` output (kibot - kiplot.py:712) +DEBUG:Skipping `blender_3d_bottom` output (kibot - kiplot.py:712) +DEBUG:Skipping `blender_3d_angled_top` output (kibot - kiplot.py:712) +DEBUG:Skipping `blender_3d_angled_bottom` output (kibot - kiplot.py:712) +DEBUG:Skipping `step` output (kibot - kiplot.py:712) +DEBUG:Skipping `glb` output (kibot - kiplot.py:712) +DEBUG:Skipping `gbr_gerbers` output (kibot - kiplot.py:712) +DEBUG:Skipping `drl_excellon` output (kibot - kiplot.py:712) +DEBUG:Skipping `zip_odb` output (kibot - kiplot.py:712) +DEBUG:Skipping `pdf_drill_map` output (kibot - kiplot.py:712) +DEBUG:Skipping `csv_position` output (kibot - kiplot.py:712) +DEBUG:Skipping `pdf_fabrication` output (kibot - kiplot.py:712) +DEBUG:Skipping `pdf_assembly` output (kibot - kiplot.py:712) +DEBUG:Skipping `zip_compress_fab` output (kibot - kiplot.py:712) +DEBUG:Skipping `jlcpcb_gerbers` output (kibot - kiplot.py:712) +DEBUG:Skipping `jlcpcb_fabpack` output (kibot - kiplot.py:712) +DEBUG:Skipping `jlcpcb_bom` output (kibot - kiplot.py:712) +DEBUG:Skipping `jlcpcb_cpl` output (kibot - kiplot.py:712) +DEBUG:Skipping `panel_801` output (kibot - kiplot.py:712) +DEBUG:Outputs before preflights: ['netlist', 'csv_drill_table', 'csv_testpoints', 'csv_testpoints_top', 'csv_testpoints_bottom', 'csv_comp_count', 'csv_impedance_table', 'txt_schematic_notes', 'txt_fabrication_notes', 'txt_assembly_notes'] (kibot - kiplot.py:714) +DEBUG:Preflight checks (kibot - kiplot.py:548) +DEBUG:Configuring preflight update_xml (kibot.pre_base - pre_base.py:145) +DEBUG:Configuring preflight set_text_variables (kibot.pre_base - pre_base.py:145) +DEBUG:Configuring preflight erc (kibot.pre_base - pre_base.py:145) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: logo -> (kibot - optionable.py:362) +DEBUG:Configuring from default: filters -> [] (kibot - optionable.py:362) +DEBUG:Configuring preflight check_zone_fills (kibot.pre_base - pre_base.py:145) +DEBUG:Configuring preflight drc (kibot.pre_base - pre_base.py:145) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: logo -> (kibot - optionable.py:362) +DEBUG:Configuring from default: filters -> [] (kibot - optionable.py:362) +DEBUG:Configuring preflight draw_fancy_stackup (kibot.pre_base - pre_base.py:145) +DEBUG:Board loaded (kibot - kiplot.py:281) +DEBUG:Configuring preflight include_table (kibot.pre_base - pre_base.py:145) +DEBUG:Skipping all preflight actions (kibot - kiplot.py:552) +DEBUG:Outputs after preflights: ['netlist', 'csv_drill_table', 'csv_testpoints', 'csv_testpoints_top', 'csv_testpoints_bottom', 'csv_comp_count', 'csv_impedance_table', 'txt_schematic_notes', 'txt_fabrication_notes', 'txt_assembly_notes'] (kibot - kiplot.py:717) +DEBUG:Outputs after sorting: ['netlist', 'csv_drill_table', 'csv_testpoints', 'csv_testpoints_top', 'csv_testpoints_bottom', 'csv_comp_count', 'csv_impedance_table', 'txt_schematic_notes', 'txt_fabrication_notes', 'txt_assembly_notes'] (kibot - kiplot.py:721) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: category -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +- 'Schematic netlist in KiCad format' (netlist) [netlist] +DEBUG:Expanding `/workspace/jkrauss/Test_6/././` in PCB context for parent: 'Schematic netlist in KiCad format' (netlist) [netlist] (kibot - optionable.py:493) +DEBUG:Current text variables: {'ASSEMBLY_NAME': '', 'ASSEMBLY_NUMBER': '', 'ASSEMBLY_SCALE': '', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_PCB': '', 'DWG_NUMBER_SCH': '', 'DWG_TITLE_ASSY': '', 'DWG_TITLE_PCB': '', 'DWG_TITLE_SCH': '', 'GIT_HASH': '', 'GIT_HASH_PCB': '', 'GIT_HASH_SCH': '', 'GIT_URL': '', 'PROJECT_CODE': '', 'RELEASE_DATE': '', 'RELEASE_STATE': '', 'REVISION': '${REVISION}', 'SCALE': '1:1', 'SHEET_NAME_01': 'Cover Page', 'SHEET_NAME_02': 'Block Diagram', 'SHEET_NAME_03': 'Project Architecture', 'SHEET_NAME_04': 'Circuit 1', 'SHEET_NAME_05': 'Circuit 2', 'SHEET_NAME_06': 'Circuit 3', 'SHEET_NAME_07': 'Parts List', 'SHEET_NAME_08': '......................................', 'SHEET_NAME_09': '......................................', 'SHEET_NAME_10': '......................................', 'SHEET_NAME_11': '......................................', 'SHEET_NAME_12': '......................................', 'SHEET_NAME_13': '......................................', 'SHEET_NAME_14': '......................................', 'SHEET_NAME_15': '......................................', 'SHEET_NAME_16': '......................................', 'SHEET_NAME_17': '......................................', 'SHEET_NAME_18': '......................................', 'SHEET_NAME_19': '......................................', 'SHEET_NAME_20': '......................................', 'STATE': 'TEMPLATE', 'VARIANT': ''} (kibot.gs - gs.py:290) +DEBUG:Expanded `/workspace/jkrauss/Test_6/././` (kibot - optionable.py:539) +DEBUG:Output destination: /workspace/jkrauss/Test_6 (kibot - kiplot.py:576) +DEBUG:Expanding `%f-%i%I%v.%x` in PCB context for parent: 'Schematic netlist in KiCad format' (netlist) [netlist] (kibot - optionable.py:493) +DEBUG:Replacing KiCad text variables: ${COMPANY} -> Asymworks, LLC (kibot.gs - gs.py:546) +DEBUG:PCB title: `Test_6` (kibot.gs - gs.py:567) +DEBUG:PCB date: `2026-03-10_16-52-47` (kibot.gs - gs.py:568) +DEBUG:PCB revision: `${REVISION}` (kibot.gs - gs.py:569) +DEBUG:PCB company: `Asymworks, LLC` (kibot.gs - gs.py:570) +DEBUG:PCB comment 1: `` (kibot.gs - gs.py:572) +DEBUG:PCB comment 2: `` (kibot.gs - gs.py:572) +DEBUG:PCB comment 3: `` (kibot.gs - gs.py:572) +DEBUG:PCB comment 4: `` (kibot.gs - gs.py:572) +DEBUG:PCB comment 5: `` (kibot.gs - gs.py:572) +DEBUG:PCB comment 6: `` (kibot.gs - gs.py:572) +DEBUG:PCB comment 7: `` (kibot.gs - gs.py:572) +DEBUG:PCB comment 8: `` (kibot.gs - gs.py:572) +DEBUG:PCB comment 9: `` (kibot.gs - gs.py:572) +DEBUG:Expanded `Test_6-netlist.net` (kibot - optionable.py:539) +DEBUG:- Executing: kicad-cli sch export netlist --format kicadsexpr --output /workspace/jkrauss/Test_6/Test_6-netlist.net /workspace/jkrauss/Test_6/Test_6.kicad_sch (kibot - kiplot.py:160) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: columns -> ['Count', 'Hole Size', 'Plated', 'Hole Shape', 'Drill Layer Pair', 'Hole Type'] (kibot - optionable.py:598) +DEBUG:Configuring from default: map -> None (kibot - optionable.py:362) +DEBUG:Configuring from default: report -> (kibot - optionable.py:362) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +- 'Drill Table in CSV format' (csv_drill_table) [excellon] +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/fab/drill-tables` in PCB context for parent: 'Drill Table in CSV format' (csv_drill_table) [excellon] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/fab/drill-tables` (kibot - optionable.py:539) +DEBUG:Output destination: /workspace/jkrauss/Test_6/mfg/fab/drill-tables (kibot - kiplot.py:576) +DEBUG:Expanding `%f-%i%I%v.%x` in PCB context for parent: 'Drill Table in CSV format' (csv_drill_table) [excellon] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-drill.drl` (kibot - optionable.py:539) +DEBUG:Generating drill files in /workspace/jkrauss/Test_6/mfg/fab/drill-tables (kibot - out_any_drill.py:292) +DEBUG:Loading sheet from /workspace/jkrauss/Test_6/Test_6.kicad_sch (kibot - v6_sch.py:2742) +DEBUG:Replacing KiCad text variables: ${COMPANY} -> Asymworks, LLC (kibot.gs - gs.py:546) +DEBUG:SCH title: `Title Page` (kibot - v6_sch.py:2367) +DEBUG:SCH date: `None` (kibot - v6_sch.py:2368) +DEBUG:SCH revision: `${REVISION}` (kibot - v6_sch.py:2369) +DEBUG:SCH company: `${COMPANY}` (kibot - v6_sch.py:2370) +DEBUG:Loading sheet from /workspace/jkrauss/Test_6/sheets/Parts_List.kicad_sch (kibot - v6_sch.py:2742) +DEBUG:Replacing KiCad text variables: ${COMPANY} -> Asymworks, LLC (kibot.gs - gs.py:546) +DEBUG:SCH title: `Parts List` (kibot - v6_sch.py:2367) +DEBUG:SCH date: `None` (kibot - v6_sch.py:2368) +DEBUG:SCH revision: `${REVISION}` (kibot - v6_sch.py:2369) +DEBUG:SCH company: `${COMPANY}` (kibot - v6_sch.py:2370) +DEBUG:Loading sheet from /workspace/jkrauss/Test_6/sheets/Block_Diagram.kicad_sch (kibot - v6_sch.py:2742) +DEBUG:Replacing KiCad text variables: ${COMPANY} -> Asymworks, LLC (kibot.gs - gs.py:546) +DEBUG:SCH title: `Block Diagram` (kibot - v6_sch.py:2367) +DEBUG:SCH date: `None` (kibot - v6_sch.py:2368) +DEBUG:SCH revision: `${REVISION}` (kibot - v6_sch.py:2369) +DEBUG:SCH company: `${COMPANY}` (kibot - v6_sch.py:2370) +DEBUG:Loading sheet from /workspace/jkrauss/Test_6/sheets/Architecture.kicad_sch (kibot - v6_sch.py:2742) +DEBUG:Replacing KiCad text variables: ${COMPANY} -> Asymworks, LLC (kibot.gs - gs.py:546) +DEBUG:SCH title: `Project Architecture` (kibot - v6_sch.py:2367) +DEBUG:SCH date: `None` (kibot - v6_sch.py:2368) +DEBUG:SCH revision: `${REVISION}` (kibot - v6_sch.py:2369) +DEBUG:SCH company: `${COMPANY}` (kibot - v6_sch.py:2370) +DEBUG:Loading sheet from /workspace/jkrauss/Test_6/sheets/Circuit-3.kicad_sch (kibot - v6_sch.py:2742) +DEBUG:Replacing KiCad text variables: ${COMPANY} -> Asymworks, LLC (kibot.gs - gs.py:546) +DEBUG:SCH title: `None` (kibot - v6_sch.py:2367) +DEBUG:SCH date: `None` (kibot - v6_sch.py:2368) +DEBUG:SCH revision: `${REVISION}` (kibot - v6_sch.py:2369) +DEBUG:SCH company: `${COMPANY}` (kibot - v6_sch.py:2370) +DEBUG:Loading sheet from /workspace/jkrauss/Test_6/sheets/Circuit-2.kicad_sch (kibot - v6_sch.py:2742) +DEBUG:Replacing KiCad text variables: ${COMPANY} -> Asymworks, LLC (kibot.gs - gs.py:546) +DEBUG:SCH title: `Circuit 2` (kibot - v6_sch.py:2367) +DEBUG:SCH date: `None` (kibot - v6_sch.py:2368) +DEBUG:SCH revision: `${REVISION}` (kibot - v6_sch.py:2369) +DEBUG:SCH company: `${COMPANY}` (kibot - v6_sch.py:2370) +DEBUG:Loading sheet from /workspace/jkrauss/Test_6/sheets/Circuit-1.kicad_sch (kibot - v6_sch.py:2742) +DEBUG:Replacing KiCad text variables: ${COMPANY} -> Asymworks, LLC (kibot.gs - gs.py:546) +DEBUG:SCH title: `Circuit 1` (kibot - v6_sch.py:2367) +DEBUG:SCH date: `None` (kibot - v6_sch.py:2368) +DEBUG:SCH revision: `${REVISION}` (kibot - v6_sch.py:2369) +DEBUG:SCH company: `${COMPANY}` (kibot - v6_sch.py:2370) +DEBUG:Collected sheet instances (kibot - v6_sch.py:2701) +DEBUG:- / -> 1 (kibot - v6_sch.py:2703) +DEBUG:Collected symbol instances (kibot - v6_sch.py:2704) +DEBUG:Collected sheet paths (kibot - v6_sch.py:2707) +DEBUG:- / (kibot - v6_sch.py:2709) +DEBUG:- /20edd200-9383-4d87-bd58-f882adb4f112 (kibot - v6_sch.py:2709) +DEBUG:- /28ad8293-baaf-4ee1-8056-ad34096542a0 (kibot - v6_sch.py:2709) +DEBUG:- /f6afef58-d841-4ad6-baf9-746b0a35f011 (kibot - v6_sch.py:2709) +DEBUG:- /f6afef58-d841-4ad6-baf9-746b0a35f011/6c8ce547-8e28-496a-9003-0e7dbfd93e8c (kibot - v6_sch.py:2709) +DEBUG:- /f6afef58-d841-4ad6-baf9-746b0a35f011/9da43fd7-7a0a-403c-bf2c-ba67cd8fa669 (kibot - v6_sch.py:2709) +DEBUG:- /f6afef58-d841-4ad6-baf9-746b0a35f011/a5aa3c11-5084-4ea5-9da5-c9ff4a86f01f (kibot - v6_sch.py:2709) +DEBUG:Assigning components to instances (kibot - v6_sch.py:2932) +DEBUG:Schematic dependencies: ['/workspace/jkrauss/Test_6/Test_6.kicad_sch', '/workspace/jkrauss/Test_6/sheets/Architecture.kicad_sch', '/workspace/jkrauss/Test_6/sheets/Block_Diagram.kicad_sch', '/workspace/jkrauss/Test_6/sheets/Circuit-1.kicad_sch', '/workspace/jkrauss/Test_6/sheets/Circuit-2.kicad_sch', '/workspace/jkrauss/Test_6/sheets/Circuit-3.kicad_sch', '/workspace/jkrauss/Test_6/sheets/Parts_List.kicad_sch'] (kibot - kiplot.py:302) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: cost_extra_columns -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: digikey_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: mouser_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: lcsc_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: logo -> (kibot - optionable.py:362) +DEBUG:Configuring from default: extra_info -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: row_colors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: html -> (kibot - optionable.py:362) +DEBUG:Configuring from default: digikey_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: mouser_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: lcsc_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: logo -> (kibot - optionable.py:362) +DEBUG:Configuring from default: extra_info -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: row_colors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: kicost_api_enable -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: kicost_api_disable -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: specs_columns -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: xlsx -> (kibot - optionable.py:362) +DEBUG:Configuring from default: hrtxt -> (kibot - optionable.py:362) +DEBUG:Configuring from default: dnc_filter -> ['_kibom_dnc_CONFIG_FIELD'] (kibot - optionable.py:362) +DEBUG:Configuring from default: group_fields_fallbacks -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: component_aliases -> [['r', 'r_small', 'res', 'resistor'], ['l', 'l_small', 'inductor'], ['c', 'c_small', 'cap', 'capacitor'], ['sw', 'switch'], ['zener', 'zenersmall'], ['d', 'diode', 'd_small']] (kibot - optionable.py:598) +DEBUG:Configuring from default: aggregate -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: distributors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: no_distributors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: sort_field -> ['Reference'] (kibot - optionable.py:362) +DEBUG:Configuring from default: footprint_populate_values -> ['no', 'yes'] (kibot - optionable.py:362) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> ['_mechanical'] (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> ['_kibom_dnf_CONFIG_FIELD'] (kibot - optionable.py:362) +DEBUG:Configuring from default: dnc_filter -> ['_kibom_dnc_CONFIG_FIELD'] (kibot - optionable.py:362) +DEBUG:Configuring from default: sub_pcbs -> [] (kibot - optionable.py:362) +DEBUG:Creating internal filter: {'name': '_mechanical', 'type': 'generic', 'comment': 'Internal default mechanical filter', 'exclude_all_hash_ref': True, 'exclude_any': [{'column': 'References', 'regex': '^TP[0-9]*'}, {'column': 'References', 'regex': '^FID'}, {'column': 'Part', 'regex': '^mount.*hole'}, {'column': 'Part', 'regex': 'solder.*bridge'}, {'column': 'Part', 'regex': 'solder.*jump'}, {'column': 'Part', 'regex': 'test.*point'}, {'column': 'Footprint', 'regex': 'test.*point'}, {'column': 'Footprint', 'regex': '^mount.*hole'}, {'column': 'Footprint', 'regex': 'fiducial'}], 'exclude_virtual': True} (kibot - fil_base.py:262) +DEBUG:Configuring from default: include_only -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: keys -> ['dnf_list'] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_refs -> [] (kibot - optionable.py:362) +DEBUG:Creating internal filter: {'name': '_kibom_dnf_config', 'type': 'generic', 'comment': 'Internal KiBoM DNF filter (config)', 'config_field': 'config', 'exclude_value': True, 'exclude_config': True, 'keys': 'dnf_list'} (kibot - fil_base.py:281) +DEBUG:Configuring from default: include_only -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_any -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_refs -> [] (kibot - optionable.py:362) +DEBUG:Creating internal filter: {'name': '_kibom_dnc_config', 'type': 'generic', 'comment': 'Internal KiBoM DNC filter (config)', 'config_field': 'config', 'exclude_value': True, 'exclude_config': True, 'keys': 'dnc_list', 'invert': True} (kibot - fil_base.py:281) +DEBUG:Configuring from default: include_only -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_any -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_refs -> [] (kibot - optionable.py:362) +DEBUG:Creating internal filter: {'name': '_kicost_rename', 'type': 'field_rename', 'comment': 'Internal filter to emulate KiCost field aliases', 'rename': [{'field': 'mpn', 'name': 'manf#'}, {'field': 'pn', 'name': 'manf#'}, {'field': 'manf_num', 'name': 'manf#'}, {'field': 'manf-num', 'name': 'manf#'}, {'field': 'mfg_num', 'name': 'manf#'}, {'field': 'mfg-num', 'name': 'manf#'}, {'field': 'mfg#', 'name': 'manf#'}, {'field': 'mfg part#', 'name': 'manf#'}, {'field': 'man_num', 'name': 'manf#'}, {'field': 'man-num', 'name': 'manf#'}, {'field': 'man#', 'name': 'manf#'}, {'field': 'mnf_num', 'name': 'manf#'}, {'field': 'mnf-num', 'name': 'manf#'}, {'field': 'mnf#', 'name': 'manf#'}, {'field': 'mfr_num', 'name': 'manf#'}, {'field': 'mfr-num', 'name': 'manf#'}, {'field': 'mfr#', 'name': 'manf#'}, {'field': 'part-num', 'name': 'manf#'}, {'field': 'part_num', 'name': 'manf#'}, {'field': 'p#', 'name': 'manf#'}, {'field': 'part#', 'name': 'manf#'}, {'field': 'manufacturer', 'name': 'manf'}, {'field': 'mnf', 'name': 'manf'}, {'field': 'man', 'name': 'manf'}, {'field': 'mfg', 'name': 'manf'}, {'field': 'mfr', 'name': 'manf'}, {'field': 'version', 'name': 'variant'}, {'field': 'nopop', 'name': 'dnp'}, {'field': 'description', 'name': 'desc'}, {'field': 'pdf', 'name': 'datasheet'}, {'field': 'arrowpart#', 'name': 'arrow#'}, {'field': 'arrow_part#', 'name': 'arrow#'}, {'field': 'arrow-part#', 'name': 'arrow#'}, {'field': 'digikeypart#', 'name': 'digikey#'}, {'field': 'digikey_part#', 'name': 'digikey#'}, {'field': 'digikey-part#', 'name': 'digikey#'}, {'field': 'farnellpart#', 'name': 'farnell#'}, {'field': 'farnell_part#', 'name': 'farnell#'}, {'field': 'farnell-part#', 'name': 'farnell#'}, {'field': 'lcscpart#', 'name': 'lcsc#'}, {'field': 'lcsc_part#', 'name': 'lcsc#'}, {'field': 'lcsc-part#', 'name': 'lcsc#'}, {'field': 'mouserpart#', 'name': 'mouser#'}, {'field': 'mouser_part#', 'name': 'mouser#'}, {'field': 'mouser-part#', 'name': 'mouser#'}, {'field': 'newarkpart#', 'name': 'newark#'}, {'field': 'newark_part#', 'name': 'newark#'}, {'field': 'newark-part#', 'name': 'newark#'}, {'field': 'rspart#', 'name': 'rs#'}, {'field': 'rs_part#', 'name': 'rs#'}, {'field': 'rs-part#', 'name': 'rs#'}, {'field': 'tmepart#', 'name': 'tme#'}, {'field': 'tme_part#', 'name': 'tme#'}, {'field': 'tme-part#', 'name': 'tme#'}, {'field': 'arrow_#', 'name': 'arrow#'}, {'field': 'arrow-#', 'name': 'arrow#'}, {'field': 'digikey_#', 'name': 'digikey#'}, {'field': 'digikey-#', 'name': 'digikey#'}, {'field': 'farnell_#', 'name': 'farnell#'}, {'field': 'farnell-#', 'name': 'farnell#'}, {'field': 'lcsc_#', 'name': 'lcsc#'}, {'field': 'lcsc-#', 'name': 'lcsc#'}, {'field': 'mouser_#', 'name': 'mouser#'}, {'field': 'mouser-#', 'name': 'mouser#'}, {'field': 'newark_#', 'name': 'newark#'}, {'field': 'newark-#', 'name': 'newark#'}, {'field': 'rs_#', 'name': 'rs#'}, {'field': 'rs-#', 'name': 'rs#'}, {'field': 'tme_#', 'name': 'tme#'}, {'field': 'tme-#', 'name': 'tme#'}, {'field': 'arrowp#', 'name': 'arrow#'}, {'field': 'arrow_p#', 'name': 'arrow#'}, {'field': 'arrow-p#', 'name': 'arrow#'}, {'field': 'digikeyp#', 'name': 'digikey#'}, {'field': 'digikey_p#', 'name': 'digikey#'}, {'field': 'digikey-p#', 'name': 'digikey#'}, {'field': 'farnellp#', 'name': 'farnell#'}, {'field': 'farnell_p#', 'name': 'farnell#'}, {'field': 'farnell-p#', 'name': 'farnell#'}, {'field': 'lcscp#', 'name': 'lcsc#'}, {'field': 'lcsc_p#', 'name': 'lcsc#'}, {'field': 'lcsc-p#', 'name': 'lcsc#'}, {'field': 'mouserp#', 'name': 'mouser#'}, {'field': 'mouser_p#', 'name': 'mouser#'}, {'field': 'mouser-p#', 'name': 'mouser#'}, {'field': 'newarkp#', 'name': 'newark#'}, {'field': 'newark_p#', 'name': 'newark#'}, {'field': 'newark-p#', 'name': 'newark#'}, {'field': 'rsp#', 'name': 'rs#'}, {'field': 'rs_p#', 'name': 'rs#'}, {'field': 'rs-p#', 'name': 'rs#'}, {'field': 'tmep#', 'name': 'tme#'}, {'field': 'tme_p#', 'name': 'tme#'}, {'field': 'tme-p#', 'name': 'tme#'}, {'field': 'arrowpn', 'name': 'arrow#'}, {'field': 'arrow_pn', 'name': 'arrow#'}, {'field': 'arrow-pn', 'name': 'arrow#'}, {'field': 'digikeypn', 'name': 'digikey#'}, {'field': 'digikey_pn', 'name': 'digikey#'}, {'field': 'digikey-pn', 'name': 'digikey#'}, {'field': 'farnellpn', 'name': 'farnell#'}, {'field': 'farnell_pn', 'name': 'farnell#'}, {'field': 'farnell-pn', 'name': 'farnell#'}, {'field': 'lcscpn', 'name': 'lcsc#'}, {'field': 'lcsc_pn', 'name': 'lcsc#'}, {'field': 'lcsc-pn', 'name': 'lcsc#'}, {'field': 'mouserpn', 'name': 'mouser#'}, {'field': 'mouser_pn', 'name': 'mouser#'}, {'field': 'mouser-pn', 'name': 'mouser#'}, {'field': 'newarkpn', 'name': 'newark#'}, {'field': 'newark_pn', 'name': 'newark#'}, {'field': 'newark-pn', 'name': 'newark#'}, {'field': 'rspn', 'name': 'rs#'}, {'field': 'rs_pn', 'name': 'rs#'}, {'field': 'rs-pn', 'name': 'rs#'}, {'field': 'tmepn', 'name': 'tme#'}, {'field': 'tme_pn', 'name': 'tme#'}, {'field': 'tme-pn', 'name': 'tme#'}, {'field': 'arrowvendor#', 'name': 'arrow#'}, {'field': 'arrow_vendor#', 'name': 'arrow#'}, {'field': 'arrow-vendor#', 'name': 'arrow#'}, {'field': 'digikeyvendor#', 'name': 'digikey#'}, {'field': 'digikey_vendor#', 'name': 'digikey#'}, {'field': 'digikey-vendor#', 'name': 'digikey#'}, {'field': 'farnellvendor#', 'name': 'farnell#'}, {'field': 'farnell_vendor#', 'name': 'farnell#'}, {'field': 'farnell-vendor#', 'name': 'farnell#'}, {'field': 'lcscvendor#', 'name': 'lcsc#'}, {'field': 'lcsc_vendor#', 'name': 'lcsc#'}, {'field': 'lcsc-vendor#', 'name': 'lcsc#'}, {'field': 'mouservendor#', 'name': 'mouser#'}, {'field': 'mouser_vendor#', 'name': 'mouser#'}, {'field': 'mouser-vendor#', 'name': 'mouser#'}, {'field': 'newarkvendor#', 'name': 'newark#'}, {'field': 'newark_vendor#', 'name': 'newark#'}, {'field': 'newark-vendor#', 'name': 'newark#'}, {'field': 'rsvendor#', 'name': 'rs#'}, {'field': 'rs_vendor#', 'name': 'rs#'}, {'field': 'rs-vendor#', 'name': 'rs#'}, {'field': 'tmevendor#', 'name': 'tme#'}, {'field': 'tme_vendor#', 'name': 'tme#'}, {'field': 'tme-vendor#', 'name': 'tme#'}, {'field': 'arrowvp#', 'name': 'arrow#'}, {'field': 'arrow_vp#', 'name': 'arrow#'}, {'field': 'arrow-vp#', 'name': 'arrow#'}, {'field': 'digikeyvp#', 'name': 'digikey#'}, {'field': 'digikey_vp#', 'name': 'digikey#'}, {'field': 'digikey-vp#', 'name': 'digikey#'}, {'field': 'farnellvp#', 'name': 'farnell#'}, {'field': 'farnell_vp#', 'name': 'farnell#'}, {'field': 'farnell-vp#', 'name': 'farnell#'}, {'field': 'lcscvp#', 'name': 'lcsc#'}, {'field': 'lcsc_vp#', 'name': 'lcsc#'}, {'field': 'lcsc-vp#', 'name': 'lcsc#'}, {'field': 'mouservp#', 'name': 'mouser#'}, {'field': 'mouser_vp#', 'name': 'mouser#'}, {'field': 'mouser-vp#', 'name': 'mouser#'}, {'field': 'newarkvp#', 'name': 'newark#'}, {'field': 'newark_vp#', 'name': 'newark#'}, {'field': 'newark-vp#', 'name': 'newark#'}, {'field': 'rsvp#', 'name': 'rs#'}, {'field': 'rs_vp#', 'name': 'rs#'}, {'field': 'rs-vp#', 'name': 'rs#'}, {'field': 'tmevp#', 'name': 'tme#'}, {'field': 'tme_vp#', 'name': 'tme#'}, {'field': 'tme-vp#', 'name': 'tme#'}, {'field': 'arrowvpn', 'name': 'arrow#'}, {'field': 'arrow_vpn', 'name': 'arrow#'}, {'field': 'arrow-vpn', 'name': 'arrow#'}, {'field': 'digikeyvpn', 'name': 'digikey#'}, {'field': 'digikey_vpn', 'name': 'digikey#'}, {'field': 'digikey-vpn', 'name': 'digikey#'}, {'field': 'farnellvpn', 'name': 'farnell#'}, {'field': 'farnell_vpn', 'name': 'farnell#'}, {'field': 'farnell-vpn', 'name': 'farnell#'}, {'field': 'lcscvpn', 'name': 'lcsc#'}, {'field': 'lcsc_vpn', 'name': 'lcsc#'}, {'field': 'lcsc-vpn', 'name': 'lcsc#'}, {'field': 'mouservpn', 'name': 'mouser#'}, {'field': 'mouser_vpn', 'name': 'mouser#'}, {'field': 'mouser-vpn', 'name': 'mouser#'}, {'field': 'newarkvpn', 'name': 'newark#'}, {'field': 'newark_vpn', 'name': 'newark#'}, {'field': 'newark-vpn', 'name': 'newark#'}, {'field': 'rsvpn', 'name': 'rs#'}, {'field': 'rs_vpn', 'name': 'rs#'}, {'field': 'rs-vpn', 'name': 'rs#'}, {'field': 'tmevpn', 'name': 'tme#'}, {'field': 'tme_vpn', 'name': 'tme#'}, {'field': 'tme-vpn', 'name': 'tme#'}, {'field': 'arrownum', 'name': 'arrow#'}, {'field': 'arrow_num', 'name': 'arrow#'}, {'field': 'arrow-num', 'name': 'arrow#'}, {'field': 'digikeynum', 'name': 'digikey#'}, {'field': 'digikey_num', 'name': 'digikey#'}, {'field': 'digikey-num', 'name': 'digikey#'}, {'field': 'farnellnum', 'name': 'farnell#'}, {'field': 'farnell_num', 'name': 'farnell#'}, {'field': 'farnell-num', 'name': 'farnell#'}, {'field': 'lcscnum', 'name': 'lcsc#'}, {'field': 'lcsc_num', 'name': 'lcsc#'}, {'field': 'lcsc-num', 'name': 'lcsc#'}, {'field': 'mousernum', 'name': 'mouser#'}, {'field': 'mouser_num', 'name': 'mouser#'}, {'field': 'mouser-num', 'name': 'mouser#'}, {'field': 'newarknum', 'name': 'newark#'}, {'field': 'newark_num', 'name': 'newark#'}, {'field': 'newark-num', 'name': 'newark#'}, {'field': 'rsnum', 'name': 'rs#'}, {'field': 'rs_num', 'name': 'rs#'}, {'field': 'rs-num', 'name': 'rs#'}, {'field': 'tmenum', 'name': 'tme#'}, {'field': 'tme_num', 'name': 'tme#'}, {'field': 'tme-num', 'name': 'tme#'}]} (kibot - fil_base.py:301) +DEBUG:Valid columns: ['Row', 'Description', 'Part', 'Part Lib', 'References', 'Value', 'Footprint', 'Footprint Lib', 'Quantity Per PCB', 'Build Quantity', 'Status', 'Datasheet', 'Sheetpath', 'Source BoM'] (14) (kibot - out_bom.py:697) +DEBUG:Valid columns: ['Row', 'Description', 'Part', 'Part Lib', 'References', 'Value', 'Footprint', 'Footprint Lib', 'Quantity Per PCB', 'Build Quantity', 'Status', 'Datasheet', 'Sheetpath', 'Source BoM'] (14) (kibot - out_bom.py:697) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +- 'Testpoint report in CSV format' (csv_testpoints) [bom] +DEBUG:Expanding `/workspace/jkrauss/Test_6/./test/testpoints` in SCH context for parent: 'Testpoint report in CSV format' (csv_testpoints) [bom] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./test/testpoints` (kibot - optionable.py:539) +DEBUG:Output destination: /workspace/jkrauss/Test_6/test/testpoints (kibot - kiplot.py:576) +DEBUG:Expanding `%f-testpoints%I%v.%x` in SCH context for parent: 'Testpoint report in CSV format' (csv_testpoints) [bom] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-testpoints.csv` (kibot - optionable.py:539) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Reading KiCad config from `/root/.config/kicad/9.0/kicad_common.json` (kibot - config.py:458) +DEBUG:Filtered warning: (W009) KiCad config without environment.vars section (kibot - log.py:125) +DEBUG:Using KICAD9_SYMBOL_DIR="/usr/share/kicad/symbols" (guessed) (kibot - config.py:433) +DEBUG:Using KICAD9_TEMPLATE_DIR="/usr/share/kicad/template" (guessed) (kibot - config.py:433) +DEBUG:Using KICAD_USER_TEMPLATE_DIR="/root/.local/share/kicad/9.0/template" (guessed) (kibot - config.py:433) +DEBUG:Using KICAD9_FOOTPRINT_DIR="/usr/share/kicad/footprints" (guessed) (kibot - config.py:433) +DEBUG:Filtered warning: (W010) Unable to find KiCad 3D models (kibot - log.py:125) +DEBUG:Using KICAD9_3RD_PARTY="/root/.local/share/kicad/9.0/3rdparty" (guessed) (kibot - config.py:433) +DEBUG:Exporting KIPRJMOD="/workspace/jkrauss/Test_6" (kibot - config.py:479) +DEBUG:Also exporting KICAD6_SYMBOL_DIR="/usr/share/kicad/symbols" (kibot - config.py:487) +DEBUG:Also exporting KICAD7_SYMBOL_DIR="/usr/share/kicad/symbols" (kibot - config.py:487) +DEBUG:Also exporting KICAD8_SYMBOL_DIR="/usr/share/kicad/symbols" (kibot - config.py:487) +DEBUG:Also exporting KICAD6_TEMPLATE_DIR="/usr/share/kicad/template" (kibot - config.py:487) +DEBUG:Also exporting KICAD7_TEMPLATE_DIR="/usr/share/kicad/template" (kibot - config.py:487) +DEBUG:Also exporting KICAD8_TEMPLATE_DIR="/usr/share/kicad/template" (kibot - config.py:487) +DEBUG:Also exporting KICAD6_FOOTPRINT_DIR="/usr/share/kicad/footprints" (kibot - config.py:487) +DEBUG:Also exporting KICAD7_FOOTPRINT_DIR="/usr/share/kicad/footprints" (kibot - config.py:487) +DEBUG:Also exporting KICAD8_FOOTPRINT_DIR="/usr/share/kicad/footprints" (kibot - config.py:487) +DEBUG:Also exporting KICAD6_3RD_PARTY="/root/.local/share/kicad/9.0/3rdparty" (kibot - config.py:487) +DEBUG:Also exporting KICAD7_3RD_PARTY="/root/.local/share/kicad/9.0/3rdparty" (kibot - config.py:487) +DEBUG:Also exporting KICAD8_3RD_PARTY="/root/.local/share/kicad/9.0/3rdparty" (kibot - config.py:487) +DEBUG:No 3D aliases (/root/.config/kicad/9.0/3d/3Dresolver.cfg) (kibot - config.py:627) +DEBUG:Filters reset (kibot - fil_base.py:196) +DEBUG:Applying transform filter `_kicost_rename` (kibot - fil_base.py:173) +DEBUG:Applying filter `only_testpoints` to exclude (kibot - fil_base.py:187) +DEBUG:Applying filter `_kibom_dnc_config` to fixed (kibot - fil_base.py:224) +DEBUG:Applying KiBoM style variants `default` (kibot - var_kibom.py:91) +DEBUG:Creating internal filter: {'type': 'expand_text_vars', 'comment': 'Internal default text variables expander', 'name': '_expand_text_vars'} (kibot - fil_base.py:333) +DEBUG:Applying transform filter `_expand_text_vars` (kibot - fil_base.py:173) +DEBUG:Using auxiliary origin: x=150000000 y=150000000 (kibot - bom.py:498) +DEBUG:Global stats: total 0 fitted 0 build 0 (kibot - bom.py:571) +DEBUG:Saving BOM File: /workspace/jkrauss/Test_6/test/testpoints/Test_6-testpoints.csv (kibot - bom.py:588) +DEBUG:CSV Output -> /workspace/jkrauss/Test_6/test/testpoints/Test_6-testpoints.csv (kibot - bom_writer.py:52) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: cost_extra_columns -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: digikey_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: mouser_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: lcsc_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: logo -> (kibot - optionable.py:362) +DEBUG:Configuring from default: extra_info -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: row_colors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: html -> (kibot - optionable.py:362) +DEBUG:Configuring from default: digikey_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: mouser_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: lcsc_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: logo -> (kibot - optionable.py:362) +DEBUG:Configuring from default: extra_info -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: row_colors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: kicost_api_enable -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: kicost_api_disable -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: specs_columns -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: xlsx -> (kibot - optionable.py:362) +DEBUG:Configuring from default: hrtxt -> (kibot - optionable.py:362) +DEBUG:Configuring from default: dnc_filter -> ['_kibom_dnc_CONFIG_FIELD'] (kibot - optionable.py:362) +DEBUG:Configuring from default: group_fields_fallbacks -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: component_aliases -> [['r', 'r_small', 'res', 'resistor'], ['l', 'l_small', 'inductor'], ['c', 'c_small', 'cap', 'capacitor'], ['sw', 'switch'], ['zener', 'zenersmall'], ['d', 'diode', 'd_small']] (kibot - optionable.py:598) +DEBUG:Configuring from default: aggregate -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: distributors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: no_distributors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: sort_field -> ['Reference'] (kibot - optionable.py:362) +DEBUG:Configuring from default: footprint_populate_values -> ['no', 'yes'] (kibot - optionable.py:362) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> ['_mechanical'] (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> ['_kibom_dnf_CONFIG_FIELD'] (kibot - optionable.py:362) +DEBUG:Configuring from default: dnc_filter -> ['_kibom_dnc_CONFIG_FIELD'] (kibot - optionable.py:362) +DEBUG:Configuring from default: sub_pcbs -> [] (kibot - optionable.py:362) +DEBUG:Valid columns: ['Row', 'Description', 'Part', 'Part Lib', 'References', 'Value', 'Footprint', 'Footprint Lib', 'Quantity Per PCB', 'Build Quantity', 'Status', 'Datasheet', 'Sheetpath', 'Source BoM'] (14) (kibot - out_bom.py:697) +DEBUG:Valid columns: ['Row', 'Description', 'Part', 'Part Lib', 'References', 'Value', 'Footprint', 'Footprint Lib', 'Quantity Per PCB', 'Build Quantity', 'Status', 'Datasheet', 'Sheetpath', 'Source BoM'] (14) (kibot - out_bom.py:697) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +- 'Top testpoint report in CSV format' (csv_testpoints_top) [bom] +DEBUG:Expanding `/workspace/jkrauss/Test_6/./test/testpoints` in SCH context for parent: 'Top testpoint report in CSV format' (csv_testpoints_top) [bom] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./test/testpoints` (kibot - optionable.py:539) +DEBUG:Output destination: /workspace/jkrauss/Test_6/test/testpoints (kibot - kiplot.py:576) +DEBUG:Expanding `%f-testpoints-top%I%v.%x` in SCH context for parent: 'Top testpoint report in CSV format' (csv_testpoints_top) [bom] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-testpoints-top.csv` (kibot - optionable.py:539) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Filters reset (kibot - fil_base.py:196) +DEBUG:Applying transform filter `_kicost_rename` (kibot - fil_base.py:173) +DEBUG:Applying filter `only_testpoints_top` to exclude (kibot - fil_base.py:187) +DEBUG:Applying filter `_kibom_dnc_config` to fixed (kibot - fil_base.py:224) +DEBUG:Applying KiBoM style variants `default` (kibot - var_kibom.py:91) +DEBUG:Applying transform filter `_expand_text_vars` (kibot - fil_base.py:173) +DEBUG:Using auxiliary origin: x=150000000 y=150000000 (kibot - bom.py:498) +DEBUG:Global stats: total 0 fitted 0 build 0 (kibot - bom.py:571) +DEBUG:Saving BOM File: /workspace/jkrauss/Test_6/test/testpoints/Test_6-testpoints-top.csv (kibot - bom.py:588) +DEBUG:CSV Output -> /workspace/jkrauss/Test_6/test/testpoints/Test_6-testpoints-top.csv (kibot - bom_writer.py:52) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: join -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: cost_extra_columns -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: digikey_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: mouser_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: lcsc_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: logo -> (kibot - optionable.py:362) +DEBUG:Configuring from default: extra_info -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: row_colors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: html -> (kibot - optionable.py:362) +DEBUG:Configuring from default: digikey_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: mouser_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: lcsc_link -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: logo -> (kibot - optionable.py:362) +DEBUG:Configuring from default: extra_info -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: row_colors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: kicost_api_enable -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: kicost_api_disable -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: specs_columns -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: xlsx -> (kibot - optionable.py:362) +DEBUG:Configuring from default: hrtxt -> (kibot - optionable.py:362) +DEBUG:Configuring from default: dnc_filter -> ['_kibom_dnc_CONFIG_FIELD'] (kibot - optionable.py:362) +DEBUG:Configuring from default: group_fields_fallbacks -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: component_aliases -> [['r', 'r_small', 'res', 'resistor'], ['l', 'l_small', 'inductor'], ['c', 'c_small', 'cap', 'capacitor'], ['sw', 'switch'], ['zener', 'zenersmall'], ['d', 'diode', 'd_small']] (kibot - optionable.py:598) +DEBUG:Configuring from default: aggregate -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: distributors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: no_distributors -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: sort_field -> ['Reference'] (kibot - optionable.py:362) +DEBUG:Configuring from default: footprint_populate_values -> ['no', 'yes'] (kibot - optionable.py:362) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> ['_mechanical'] (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> ['_kibom_dnf_CONFIG_FIELD'] (kibot - optionable.py:362) +DEBUG:Configuring from default: dnc_filter -> ['_kibom_dnc_CONFIG_FIELD'] (kibot - optionable.py:362) +DEBUG:Configuring from default: sub_pcbs -> [] (kibot - optionable.py:362) +DEBUG:Valid columns: ['Row', 'Description', 'Part', 'Part Lib', 'References', 'Value', 'Footprint', 'Footprint Lib', 'Quantity Per PCB', 'Build Quantity', 'Status', 'Datasheet', 'Sheetpath', 'Source BoM'] (14) (kibot - out_bom.py:697) +DEBUG:Valid columns: ['Row', 'Description', 'Part', 'Part Lib', 'References', 'Value', 'Footprint', 'Footprint Lib', 'Quantity Per PCB', 'Build Quantity', 'Status', 'Datasheet', 'Sheetpath', 'Source BoM'] (14) (kibot - out_bom.py:697) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +- 'Bottom testpoint report in CSV format' (csv_testpoints_bottom) [bom] +DEBUG:Expanding `/workspace/jkrauss/Test_6/./test/testpoints` in SCH context for parent: 'Bottom testpoint report in CSV format' (csv_testpoints_bottom) [bom] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./test/testpoints` (kibot - optionable.py:539) +DEBUG:Output destination: /workspace/jkrauss/Test_6/test/testpoints (kibot - kiplot.py:576) +DEBUG:Expanding `%f-testpoints-bottom%I%v.%x` in SCH context for parent: 'Bottom testpoint report in CSV format' (csv_testpoints_bottom) [bom] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-testpoints-bottom.csv` (kibot - optionable.py:539) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Filters reset (kibot - fil_base.py:196) +DEBUG:Applying transform filter `_kicost_rename` (kibot - fil_base.py:173) +DEBUG:Applying filter `only_testpoints_bottom` to exclude (kibot - fil_base.py:187) +DEBUG:Applying filter `_kibom_dnc_config` to fixed (kibot - fil_base.py:224) +DEBUG:Applying KiBoM style variants `default` (kibot - var_kibom.py:91) +DEBUG:Applying transform filter `_expand_text_vars` (kibot - fil_base.py:173) +DEBUG:Using auxiliary origin: x=150000000 y=150000000 (kibot - bom.py:498) +DEBUG:Global stats: total 0 fitted 0 build 0 (kibot - bom.py:571) +DEBUG:Saving BOM File: /workspace/jkrauss/Test_6/test/testpoints/Test_6-testpoints-bottom.csv (kibot - bom.py:588) +DEBUG:CSV Output -> /workspace/jkrauss/Test_6/test/testpoints/Test_6-testpoints-bottom.csv (kibot - bom_writer.py:52) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +- 'Component report (count) in CSV format' (csv_comp_count) [report] +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/assembly` in PCB context for parent: 'Component report (count) in CSV format' (csv_comp_count) [report] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/assembly` (kibot - optionable.py:539) +DEBUG:Output destination: /workspace/jkrauss/Test_6/mfg/assembly (kibot - kiplot.py:576) +DEBUG:Expanding `%f-%I%v.csv` in PCB context for parent: 'Component report (count) in CSV format' (csv_comp_count) [report] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-components_count.csv` (kibot - optionable.py:539) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Filters reset (kibot - fil_base.py:196) +DEBUG:Applying filter `_mechanical` to exclude (kibot - fil_base.py:187) +DEBUG:Eurocircuits Pattern class for `minimum` is 10 because the clearance is 0.2, track is 0.0 and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Pattern class for `measured` is 4 because the clearance is 0.2, track is inf and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Pattern class for `defined` is 10 because the clearance is 0.2, track is 0.0 and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Drill class for `minimum` is D because the drill is 0.3 (kibot - out_report.py:113) +DEBUG:Eurocircuits Drill class for `measured` is A because the drill is inf (kibot - out_report.py:113) +DEBUG:Eurocircuits Drill class for `defined` is D because the drill is 0.3 (kibot - out_report.py:113) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./schematic` in SCH context for parent: 'Schematic in PDF format' (pdf_schematic) [pdf_sch_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./schematic` (kibot - optionable.py:539) +DEBUG:Expanding `%f-%i%I%v.%x` in SCH context for parent: 'Schematic in PDF format' (pdf_schematic) [pdf_sch_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-schematic.pdf` (kibot - optionable.py:539) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: repeat_layers -> ['inners'] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: repeat_layers -> ['inners'] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: repeat_layers -> ['inners'] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: repeat_layers -> ['inners'] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Creating internal filter: {'name': '_kibom_dnf_Config', 'type': 'generic', 'comment': 'Internal KiBoM DNF filter (Config)', 'config_field': 'Config', 'exclude_value': True, 'exclude_config': True, 'keys': 'dnf_list'} (kibot - fil_base.py:281) +DEBUG:Configuring from default: include_only -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_any -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_refs -> [] (kibot - optionable.py:362) +DEBUG:Expanding `Top Fabrication (Scale 1:1)` in PCB context for Top Fabrication (Scale 1:1) [Edge.Cuts, F.Cu, F.Mask, F.Paste, F.Silkscreen, F.Fab and F.Dimensions] parent: (kibot - optionable.py:493) +DEBUG:Expanded `Top Fabrication (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Top Fabrication (Scale 1:1)` in PCB context for Top Fabrication (Scale 1:1) [Edge.Cuts, F.Cu, F.Mask, F.Paste, F.Silkscreen, F.Fab and F.Dimensions] parent: (kibot - optionable.py:493) +DEBUG:Expanded `Top Fabrication (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Bottom Fabrication (Scale 1:1)` in PCB context for Bottom Fabrication (Scale 1:1) [Edge.Cuts, B.Cu, B.Mask, B.Paste, B.Silkscreen, B.Fab and B.Dimensions] mirror parent: (kibot - optionable.py:493) +DEBUG:Expanded `Bottom Fabrication (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Bottom Fabrication (Scale 1:1)` in PCB context for Bottom Fabrication (Scale 1:1) [Edge.Cuts, B.Cu, B.Mask, B.Paste, B.Silkscreen, B.Fab and B.Dimensions] mirror parent: (kibot - optionable.py:493) +DEBUG:Expanded `Bottom Fabrication (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Drill Drawing (L1 - L4)` in PCB context for Drill Drawing (%lp) [DrillMap and Edge.Cuts] parent: (kibot - optionable.py:493) +DEBUG:Expanded `Drill Drawing (L1 - L4)` (kibot - optionable.py:539) +DEBUG:Expanding `Drill Drawing L1 - L4 (Scale 1:1)` in PCB context for Drill Drawing (L1 - L4) [DrillMap and Edge.Cuts] parent: (kibot - optionable.py:493) +DEBUG:Expanded `Drill Drawing L1 - L4 (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Top Test Points (Scale 1:1)` in PCB context for Top Test Points (Scale 1:1) [Edge.Cuts, F.Cu, F.Mask, F.Paste, F.Silkscreen, F.Fab and F.TestPointList] parent: (kibot - optionable.py:493) +DEBUG:Expanded `Top Test Points (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Top Test Points (Scale 1:1)` in PCB context for Top Test Points (Scale 1:1) [Edge.Cuts, F.Cu, F.Mask, F.Paste, F.Silkscreen, F.Fab and F.TestPointList] parent: (kibot - optionable.py:493) +DEBUG:Expanded `Top Test Points (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Bottom Test Points (Scale 1:1)` in PCB context for Bottom Test Points (Scale 1:1) [Edge.Cuts, B.Cu, B.Mask, B.Paste, B.Silkscreen, B.Fab and B.TestPointList] mirror parent: (kibot - optionable.py:493) +DEBUG:Expanded `Bottom Test Points (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Bottom Test Points (Scale 1:1)` in PCB context for Bottom Test Points (Scale 1:1) [Edge.Cuts, B.Cu, B.Mask, B.Paste, B.Silkscreen, B.Fab and B.TestPointList] mirror parent: (kibot - optionable.py:493) +DEBUG:Expanded `Bottom Test Points (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `F.Cu (Scale 1:1)` in PCB context for %ln (Scale 1:1) [Edge.Cuts and F.Cu] parent: (kibot - optionable.py:493) +DEBUG:Expanded `F.Cu (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `F.Cu (Scale 1:1)` in PCB context for F.Cu (Scale 1:1) [Edge.Cuts and F.Cu] parent: (kibot - optionable.py:493) +DEBUG:Expanded `F.Cu (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `In1.Cu (Scale 1:1)` in PCB context for %ln (Scale 1:1) [Edge.Cuts and In1.Cu] parent: (kibot - optionable.py:493) +DEBUG:Expanded `In1.Cu (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `In1.Cu (Scale 1:1)` in PCB context for In1.Cu (Scale 1:1) [Edge.Cuts and In1.Cu] parent: (kibot - optionable.py:493) +DEBUG:Expanded `In1.Cu (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `In2.Cu (Scale 1:1)` in PCB context for %ln (Scale 1:1) [Edge.Cuts and In2.Cu] parent: (kibot - optionable.py:493) +DEBUG:Expanded `In2.Cu (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `In2.Cu (Scale 1:1)` in PCB context for In2.Cu (Scale 1:1) [Edge.Cuts and In2.Cu] parent: (kibot - optionable.py:493) +DEBUG:Expanded `In2.Cu (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `B.Cu (Scale 1:1)` in PCB context for %ln (Scale 1:1) [Edge.Cuts and B.Cu] parent: (kibot - optionable.py:493) +DEBUG:Expanded `B.Cu (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `B.Cu (Scale 1:1)` in PCB context for B.Cu (Scale 1:1) [Edge.Cuts and B.Cu] parent: (kibot - optionable.py:493) +DEBUG:Expanded `B.Cu (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Looking for color theme `Altium_Theme` (kibot - color_theme.py:60) +DEBUG:- Color for layer F.Cu (0): #C83434 (kibot - color_theme.py:110) +DEBUG:- Color for layer F.Mask (1): #D864FF66 (kibot - color_theme.py:110) +DEBUG:- Color for layer B.Cu (2): #4D7FC4 (kibot - color_theme.py:110) +DEBUG:- Color for layer B.Mask (3): #02FFEE66 (kibot - color_theme.py:110) +DEBUG:- Color for layer In1.Cu (4): #7FC87F (kibot - color_theme.py:110) +DEBUG:- Color for layer F.Silkscreen (5): #F2EDA1 (kibot - color_theme.py:110) +DEBUG:- Color for layer In2.Cu (6): #CE7D2C (kibot - color_theme.py:110) +DEBUG:- Color for layer B.Silkscreen (7): #E8B2A7 (kibot - color_theme.py:110) +DEBUG:- Color for layer In3.Cu (8): #4FCBCB (kibot - color_theme.py:110) +DEBUG:- Color for layer F.Adhesive (9): #840084 (kibot - color_theme.py:110) +DEBUG:- Color for layer In4.Cu (10): #DB628B (kibot - color_theme.py:110) +DEBUG:- Color for layer B.Adhesive (11): #000084 (kibot - color_theme.py:110) +DEBUG:- Color for layer In5.Cu (12): #A7A5C6 (kibot - color_theme.py:110) +DEBUG:- Color for layer F.Paste (13): #B4A09AE6 (kibot - color_theme.py:110) +DEBUG:- Color for layer In6.Cu (14): #28CCD9 (kibot - color_theme.py:110) +DEBUG:- Color for layer B.Paste (15): #00C2C2E6 (kibot - color_theme.py:110) +DEBUG:- Color for layer In7.Cu (16): #E8B2A7 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.Drawings (17): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In8.Cu (18): #F2EDA1 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.Comments (19): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In9.Cu (20): #8DCB81 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.Eco1 (21): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In10.Cu (22): #ED7C33 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.Eco2 (23): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In11.Cu (24): #5BC3EB (kibot - color_theme.py:110) +DEBUG:- Color for layer Edge.Cuts (25): #D0D2CD (kibot - color_theme.py:110) +DEBUG:- Color for layer In12.Cu (26): #F76F8E (kibot - color_theme.py:110) +DEBUG:- Color for layer Margin (27): #FF26E2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In13.Cu (28): #A7A5C6 (kibot - color_theme.py:110) +DEBUG:- Color for layer B.Courtyard (29): #26E9FF (kibot - color_theme.py:110) +DEBUG:- Color for layer In14.Cu (30): #28CCD9 (kibot - color_theme.py:110) +DEBUG:- Color for layer F.Courtyard (31): #FF26E2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In15.Cu (32): #E8B2A7 (kibot - color_theme.py:110) +DEBUG:- Color for layer B.Fab (33): #585D84 (kibot - color_theme.py:110) +DEBUG:- Color for layer In16.Cu (34): #F2EDA1 (kibot - color_theme.py:110) +DEBUG:- Color for layer F.Fab (35): #AFAFAF (kibot - color_theme.py:110) +DEBUG:- Color for layer In17.Cu (36): #ED7C33 (kibot - color_theme.py:110) +DEBUG:- Color for layer In18.Cu (38): #5BC3EB (kibot - color_theme.py:110) +DEBUG:- Color for layer User.1 (39): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In19.Cu (40): #F76F8E (kibot - color_theme.py:110) +DEBUG:- Color for layer User.2 (41): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In20.Cu (42): #A7A5C6 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.3 (43): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In21.Cu (44): #28CCD9 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.4 (45): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In22.Cu (46): #E8B2A7 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.5 (47): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In23.Cu (48): #F2EDA1 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.6 (49): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In24.Cu (50): #ED7C33 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.7 (51): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In25.Cu (52): #5BC3EB (kibot - color_theme.py:110) +DEBUG:- Color for layer User.8 (53): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In26.Cu (54): #F76F8E (kibot - color_theme.py:110) +DEBUG:- Color for layer User.9 (55): #E8B2A7 (kibot - color_theme.py:110) +DEBUG:- Color for layer In27.Cu (56): #A7A5C6 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.10 (57): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In28.Cu (58): #28CCD9 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.11 (59): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In29.Cu (60): #E8B2A7 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.12 (61): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In30.Cu (62): #F2EDA1 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.13 (63): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In31.Cu (64): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.14 (65): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In32.Cu (66): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.15 (67): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In33.Cu (68): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.16 (69): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In34.Cu (70): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.17 (71): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In35.Cu (72): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.18 (73): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In36.Cu (74): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.19 (75): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In37.Cu (76): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.20 (77): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In38.Cu (78): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.21 (79): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In39.Cu (80): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.22 (81): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In40.Cu (82): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.23 (83): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In41.Cu (84): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.24 (85): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In42.Cu (86): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.25 (87): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In43.Cu (88): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.26 (89): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In44.Cu (90): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.27 (91): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In45.Cu (92): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.28 (93): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In46.Cu (94): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.29 (95): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In47.Cu (96): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.30 (97): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In48.Cu (98): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.31 (99): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In49.Cu (100): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.32 (101): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In50.Cu (102): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.33 (103): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In51.Cu (104): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.34 (105): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In52.Cu (106): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.35 (107): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In53.Cu (108): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.36 (109): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In54.Cu (110): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.37 (111): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In55.Cu (112): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.38 (113): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In56.Cu (114): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.39 (115): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In57.Cu (116): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.40 (117): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In58.Cu (118): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.41 (119): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In59.Cu (120): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.42 (121): #5994DC (kibot - color_theme.py:110) +DEBUG:- Color for layer In60.Cu (122): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.43 (123): #B4DBD2 (kibot - color_theme.py:110) +DEBUG:- Color for layer In61.Cu (124): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.44 (125): #D8C852 (kibot - color_theme.py:110) +DEBUG:- Color for layer In62.Cu (126): #000000 (kibot - color_theme.py:110) +DEBUG:- Color for layer User.45 (127): #C2C2C2 (kibot - color_theme.py:110) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/fab` in PCB context for parent: 'Fabrication document in PDF format' (pdf_fabrication) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/fab` (kibot - optionable.py:539) +DEBUG:Expanding `%f-fabrication%I%v.%x` in PCB context for parent: 'Fabrication document in PDF format' (pdf_fabrication) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-fabrication.pdf` (kibot - optionable.py:539) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: repeat_layers -> ['inners'] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: repeat_layers -> ['inners'] (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: repeat_layers -> ['inners'] (kibot - optionable.py:362) +DEBUG:Configuring from default: drill -> False (kibot - optionable.py:362) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: exclude_filter -> _null (kibot - optionable.py:362) +DEBUG:Expanding `Top/Bottom View` in PCB context for Top/Bottom View [AssyTitlePage] parent: (kibot - optionable.py:493) +DEBUG:Expanded `Top/Bottom View` (kibot - optionable.py:539) +DEBUG:Expanding `` in PCB context for Top/Bottom View [AssyTitlePage] parent: (kibot - optionable.py:493) +DEBUG:Expanded `` (kibot - optionable.py:539) +DEBUG:Expanding `Top Assembly (Scale 1:1)` in PCB context for Top Assembly (Scale 1:1) [Edge.Cuts, F.Cu, F.Mask, F.Paste, F.Silkscreen, F.Fab, F.AssemblyText and F.DNP] parent: (kibot - optionable.py:493) +DEBUG:Expanded `Top Assembly (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Top Assembly (Scale 1:1)` in PCB context for Top Assembly (Scale 1:1) [Edge.Cuts, F.Cu, F.Mask, F.Paste, F.Silkscreen, F.Fab, F.AssemblyText and F.DNP] parent: (kibot - optionable.py:493) +DEBUG:Expanded `Top Assembly (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Bottom Assembly (Scale 1:1)` in PCB context for Bottom Assembly (Scale 1:1) [Edge.Cuts, B.Cu, B.Mask, B.Paste, B.Silkscreen, B.Fab, B.AssemblyText and B.DNP] mirror parent: (kibot - optionable.py:493) +DEBUG:Expanded `Bottom Assembly (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Expanding `Bottom Assembly (Scale 1:1)` in PCB context for Bottom Assembly (Scale 1:1) [Edge.Cuts, B.Cu, B.Mask, B.Paste, B.Silkscreen, B.Fab, B.AssemblyText and B.DNP] mirror parent: (kibot - optionable.py:493) +DEBUG:Expanded `Bottom Assembly (Scale 1:1)` (kibot - optionable.py:539) +DEBUG:Looking for color theme `Altium_Theme` (kibot - color_theme.py:60) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/assembly` in PCB context for parent: 'Assembly document in PDF format' (pdf_assembly) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/assembly` (kibot - optionable.py:539) +DEBUG:Expanding `%f-assembly%I%v.%x` in PCB context for parent: 'Assembly document in PDF format' (pdf_assembly) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-assembly.pdf` (kibot - optionable.py:539) +DEBUG:Report template: `/usr/local/lib/python3.13/dist-packages/kibot/resources/report_templates/report_total_components.txt` (kibot - out_report.py:1091) +DEBUG:Report output: `/workspace/jkrauss/Test_6/mfg/assembly/Test_6-components_count.csv` (kibot - out_report.py:1124) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +- 'Impedance table in CSV format' (csv_impedance_table) [report] +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/fab` in PCB context for parent: 'Impedance table in CSV format' (csv_impedance_table) [report] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/fab` (kibot - optionable.py:539) +DEBUG:Output destination: /workspace/jkrauss/Test_6/mfg/fab (kibot - kiplot.py:576) +DEBUG:Expanding `%f-%I%v.csv` in PCB context for parent: 'Impedance table in CSV format' (csv_impedance_table) [report] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-impedance_table.csv` (kibot - optionable.py:539) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Filters reset (kibot - fil_base.py:196) +DEBUG:Applying filter `_mechanical` to exclude (kibot - fil_base.py:187) +DEBUG:Eurocircuits Pattern class for `minimum` is 10 because the clearance is 0.2, track is 0.0 and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Pattern class for `measured` is 4 because the clearance is 0.2, track is inf and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Pattern class for `defined` is 10 because the clearance is 0.2, track is 0.0 and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Drill class for `minimum` is D because the drill is 0.3 (kibot - out_report.py:113) +DEBUG:Eurocircuits Drill class for `measured` is A because the drill is inf (kibot - out_report.py:113) +DEBUG:Eurocircuits Drill class for `defined` is D because the drill is 0.3 (kibot - out_report.py:113) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./schematic` in SCH context for parent: 'Schematic in PDF format' (pdf_schematic) [pdf_sch_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./schematic` (kibot - optionable.py:539) +DEBUG:Expanding `%f-%i%I%v.%x` in SCH context for parent: 'Schematic in PDF format' (pdf_schematic) [pdf_sch_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-schematic.pdf` (kibot - optionable.py:539) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/fab` in PCB context for parent: 'Fabrication document in PDF format' (pdf_fabrication) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/fab` (kibot - optionable.py:539) +DEBUG:Expanding `%f-fabrication%I%v.%x` in PCB context for parent: 'Fabrication document in PDF format' (pdf_fabrication) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-fabrication.pdf` (kibot - optionable.py:539) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/assembly` in PCB context for parent: 'Assembly document in PDF format' (pdf_assembly) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/assembly` (kibot - optionable.py:539) +DEBUG:Expanding `%f-assembly%I%v.%x` in PCB context for parent: 'Assembly document in PDF format' (pdf_assembly) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-assembly.pdf` (kibot - optionable.py:539) +DEBUG:Report template: `notes/impedance_table.txt` (kibot - out_report.py:1091) +DEBUG:Report output: `/workspace/jkrauss/Test_6/mfg/fab/Test_6-impedance_table.csv` (kibot - out_report.py:1124) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +- 'Schematic notes in TXT format' (txt_schematic_notes) [report] +DEBUG:Expanding `/workspace/jkrauss/Test_6/./schematic` in PCB context for parent: 'Schematic notes in TXT format' (txt_schematic_notes) [report] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./schematic` (kibot - optionable.py:539) +DEBUG:Output destination: /workspace/jkrauss/Test_6/schematic (kibot - kiplot.py:576) +DEBUG:Expanding `%f-%I%v.txt` in PCB context for parent: 'Schematic notes in TXT format' (txt_schematic_notes) [report] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-schematic_notes.txt` (kibot - optionable.py:539) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Filters reset (kibot - fil_base.py:196) +DEBUG:Applying filter `_mechanical` to exclude (kibot - fil_base.py:187) +DEBUG:Eurocircuits Pattern class for `minimum` is 10 because the clearance is 0.2, track is 0.0 and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Pattern class for `measured` is 4 because the clearance is 0.2, track is inf and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Pattern class for `defined` is 10 because the clearance is 0.2, track is 0.0 and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Drill class for `minimum` is D because the drill is 0.3 (kibot - out_report.py:113) +DEBUG:Eurocircuits Drill class for `measured` is A because the drill is inf (kibot - out_report.py:113) +DEBUG:Eurocircuits Drill class for `defined` is D because the drill is 0.3 (kibot - out_report.py:113) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./schematic` in SCH context for parent: 'Schematic in PDF format' (pdf_schematic) [pdf_sch_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./schematic` (kibot - optionable.py:539) +DEBUG:Expanding `%f-%i%I%v.%x` in SCH context for parent: 'Schematic in PDF format' (pdf_schematic) [pdf_sch_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-schematic.pdf` (kibot - optionable.py:539) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/fab` in PCB context for parent: 'Fabrication document in PDF format' (pdf_fabrication) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/fab` (kibot - optionable.py:539) +DEBUG:Expanding `%f-fabrication%I%v.%x` in PCB context for parent: 'Fabrication document in PDF format' (pdf_fabrication) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-fabrication.pdf` (kibot - optionable.py:539) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/assembly` in PCB context for parent: 'Assembly document in PDF format' (pdf_assembly) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/assembly` (kibot - optionable.py:539) +DEBUG:Expanding `%f-assembly%I%v.%x` in PCB context for parent: 'Assembly document in PDF format' (pdf_assembly) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-assembly.pdf` (kibot - optionable.py:539) +DEBUG:Report template: `notes/schematic_notes.txt` (kibot - out_report.py:1091) +DEBUG:Report output: `/workspace/jkrauss/Test_6/schematic/Test_6-schematic_notes.txt` (kibot - out_report.py:1124) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +- 'Fabrication notes in TXT format' (txt_fabrication_notes) [report] +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/fab` in PCB context for parent: 'Fabrication notes in TXT format' (txt_fabrication_notes) [report] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/fab` (kibot - optionable.py:539) +DEBUG:Output destination: /workspace/jkrauss/Test_6/mfg/fab (kibot - kiplot.py:576) +DEBUG:Expanding `%f-%I%v.txt` in PCB context for parent: 'Fabrication notes in TXT format' (txt_fabrication_notes) [report] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-fabrication_notes.txt` (kibot - optionable.py:539) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Filters reset (kibot - fil_base.py:196) +DEBUG:Applying filter `_mechanical` to exclude (kibot - fil_base.py:187) +DEBUG:Eurocircuits Pattern class for `minimum` is 10 because the clearance is 0.2, track is 0.0 and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Pattern class for `measured` is 4 because the clearance is 0.2, track is inf and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Pattern class for `defined` is 10 because the clearance is 0.2, track is 0.0 and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Drill class for `minimum` is D because the drill is 0.3 (kibot - out_report.py:113) +DEBUG:Eurocircuits Drill class for `measured` is A because the drill is inf (kibot - out_report.py:113) +DEBUG:Eurocircuits Drill class for `defined` is D because the drill is 0.3 (kibot - out_report.py:113) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./schematic` in SCH context for parent: 'Schematic in PDF format' (pdf_schematic) [pdf_sch_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./schematic` (kibot - optionable.py:539) +DEBUG:Expanding `%f-%i%I%v.%x` in SCH context for parent: 'Schematic in PDF format' (pdf_schematic) [pdf_sch_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-schematic.pdf` (kibot - optionable.py:539) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/fab` in PCB context for parent: 'Fabrication document in PDF format' (pdf_fabrication) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/fab` (kibot - optionable.py:539) +DEBUG:Expanding `%f-fabrication%I%v.%x` in PCB context for parent: 'Fabrication document in PDF format' (pdf_fabrication) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-fabrication.pdf` (kibot - optionable.py:539) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/assembly` in PCB context for parent: 'Assembly document in PDF format' (pdf_assembly) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/assembly` (kibot - optionable.py:539) +DEBUG:Expanding `%f-assembly%I%v.%x` in PCB context for parent: 'Assembly document in PDF format' (pdf_assembly) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-assembly.pdf` (kibot - optionable.py:539) +DEBUG:Report template: `notes/fabrication_notes.txt` (kibot - out_report.py:1091) +DEBUG:- Evaluating `stackup and impedance_controlled` (kibot - out_report.py:1068) +DEBUG:- Result `False` (kibot - out_report.py:1073) +DEBUG:- Evaluating `stackup and impedance_controlled` (kibot - out_report.py:1068) +DEBUG:- Result `False` (kibot - out_report.py:1073) +DEBUG:- Evaluating `stackup and impedance_controlled` (kibot - out_report.py:1068) +DEBUG:- Result `False` (kibot - out_report.py:1073) +DEBUG:- Evaluating `stackup and impedance_controlled` (kibot - out_report.py:1068) +DEBUG:- Result `False` (kibot - out_report.py:1073) +DEBUG:- Evaluating `stackup and impedance_controlled` (kibot - out_report.py:1068) +DEBUG:- Result `False` (kibot - out_report.py:1073) +DEBUG:- Evaluating `stackup and impedance_controlled` (kibot - out_report.py:1068) +DEBUG:- Result `False` (kibot - out_report.py:1073) +DEBUG:Report output: `/workspace/jkrauss/Test_6/mfg/fab/Test_6-fabrication_notes.txt` (kibot - out_report.py:1124) +DEBUG:Using global `output`=`%f-%i%I%v.%x` (kibot - optionable.py:58) +DEBUG:Configuring from default: pre_transform -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: dnf_filter -> _null (kibot - optionable.py:362) +DEBUG:Configuring from default: groups -> [] (kibot - optionable.py:362) +- 'Assembly notes in TXT format' (txt_assembly_notes) [report] +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/assembly` in PCB context for parent: 'Assembly notes in TXT format' (txt_assembly_notes) [report] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/assembly` (kibot - optionable.py:539) +DEBUG:Output destination: /workspace/jkrauss/Test_6/mfg/assembly (kibot - kiplot.py:576) +DEBUG:Expanding `%f-%I%v.txt` in PCB context for parent: 'Assembly notes in TXT format' (txt_assembly_notes) [report] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-assembly_notes.txt` (kibot - optionable.py:539) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Before collapse: (kibot - v5_sch.py:1720) +DEBUG:After collapse: (kibot - v5_sch.py:1762) +DEBUG:Filters reset (kibot - fil_base.py:196) +DEBUG:Applying filter `_mechanical` to exclude (kibot - fil_base.py:187) +DEBUG:Eurocircuits Pattern class for `minimum` is 10 because the clearance is 0.2, track is 0.0 and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Pattern class for `measured` is 4 because the clearance is 0.2, track is inf and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Pattern class for `defined` is 10 because the clearance is 0.2, track is 0.0 and OAR is inf (kibot - out_report.py:100) +DEBUG:Eurocircuits Drill class for `minimum` is D because the drill is 0.3 (kibot - out_report.py:113) +DEBUG:Eurocircuits Drill class for `measured` is A because the drill is inf (kibot - out_report.py:113) +DEBUG:Eurocircuits Drill class for `defined` is D because the drill is 0.3 (kibot - out_report.py:113) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./schematic` in SCH context for parent: 'Schematic in PDF format' (pdf_schematic) [pdf_sch_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./schematic` (kibot - optionable.py:539) +DEBUG:Expanding `%f-%i%I%v.%x` in SCH context for parent: 'Schematic in PDF format' (pdf_schematic) [pdf_sch_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-schematic.pdf` (kibot - optionable.py:539) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/fab` in PCB context for parent: 'Fabrication document in PDF format' (pdf_fabrication) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/fab` (kibot - optionable.py:539) +DEBUG:Expanding `%f-fabrication%I%v.%x` in PCB context for parent: 'Fabrication document in PDF format' (pdf_fabrication) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-fabrication.pdf` (kibot - optionable.py:539) +DEBUG:Expanding `/workspace/jkrauss/Test_6/./mfg/assembly` in PCB context for parent: 'Assembly document in PDF format' (pdf_assembly) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `/workspace/jkrauss/Test_6/./mfg/assembly` (kibot - optionable.py:539) +DEBUG:Expanding `%f-assembly%I%v.%x` in PCB context for parent: 'Assembly document in PDF format' (pdf_assembly) [pcb_print] (kibot - optionable.py:493) +DEBUG:Expanded `Test_6-assembly.pdf` (kibot - optionable.py:539) +DEBUG:Report template: `notes/assembly_notes.txt` (kibot - out_report.py:1091) +DEBUG:Report output: `/workspace/jkrauss/Test_6/mfg/assembly/Test_6-assembly_notes.txt` (kibot - out_report.py:1124) +Found 1 unique warning/s (3 total, 2 filtered) diff --git a/kibot_run_xml.log b/kibot_run_xml.log new file mode 100644 index 0000000..1a48154 --- /dev/null +++ b/kibot_run_xml.log @@ -0,0 +1,533 @@ +DEBUG:KiBot 1.8.6 verbose level: 0 started on 2026-03-10 16:52:49.782675 (kibot - __main__.py:524) +DEBUG:Filtering warnings we always get on CI/CD (kibot - __main__.py:438) +DEBUG:Command line options: {'--banner': None, + '--board-file': None, + '--cli-order': False, + '--config-outs': False, + '--copy-and-expand': False, + '--copy-options': False, + '--define': [], + '--defs-from-env': False, + '--defs-from-project': False, + '--dont-stop': False, + '--dry': False, + '--example': False, + '--fail-on-ignored': False, + '--fail-on-warnings': False, + '--global-redef': [], + '--gui': False, + '--gui-inject': None, + '--help': False, + '--help-banners': False, + '--help-dependencies': False, + '--help-errors': False, + '--help-filters': False, + '--help-global-options': False, + '--help-list-offsets': False, + '--help-list-outputs': False, + '--help-list-rotations': False, + '--help-output': None, + '--help-outputs': False, + '--help-preflights': False, + '--help-variants': False, + '--internal-check': False, + '--invert-sel': False, + '--json': False, + '--list': False, + '--list-variants': False, + '--log': 'kibot_run_xml.log', + '--makefile': None, + '--markdown': False, + '--no-auto-download': False, + '--no-priority': False, + '--no-warn': None, + '--only-groups': False, + '--only-names': False, + '--only-pre': False, + '--out-dir': '.', + '--output-name-first': False, + '--plot-config': 'kibot/yaml/kibot_pre_update_xml.yaml', + '--quick-start': False, + '--quiet': False, + '--rst': False, + '--schematic': None, + '--skip-pre': None, + '--start': '.', + '--stop-on-warnings': False, + '--sub-pcbs': False, + '--type': [], + '--variant': [], + '--verbose': 0, + '--version': False, + '--warn-ci-cd': False, + 'TARGET': []} (kibot - __main__.py:528) +DEBUG:Start of initialization (kibot - __main__.py:531) +DEBUG:Detected KiCad v9.0.7 (9.0.7+1 90000070) (kibot - __main__.py:340) +DEBUG:KiCad config path /root/.config/kicad/9.0 (kibot - __main__.py:392) +DEBUG:Command line arguments: +['/usr/local/bin/kibot', '-c', 'kibot/yaml/kibot_pre_update_xml.yaml', '-d', '.', '--log', 'kibot_run_xml.log'] (kibot - __main__.py:444) +DEBUG:Command line parsed: +{'--banner': None, + '--board-file': None, + '--cli-order': False, + '--config-outs': False, + '--copy-and-expand': False, + '--copy-options': False, + '--define': [], + '--defs-from-env': False, + '--defs-from-project': False, + '--dont-stop': False, + '--dry': False, + '--example': False, + '--fail-on-ignored': False, + '--fail-on-warnings': False, + '--global-redef': [], + '--gui': False, + '--gui-inject': None, + '--help': False, + '--help-banners': False, + '--help-dependencies': False, + '--help-errors': False, + '--help-filters': False, + '--help-global-options': False, + '--help-list-offsets': False, + '--help-list-outputs': False, + '--help-list-rotations': False, + '--help-output': None, + '--help-outputs': False, + '--help-preflights': False, + '--help-variants': False, + '--internal-check': False, + '--invert-sel': False, + '--json': False, + '--list': False, + '--list-variants': False, + '--log': 'kibot_run_xml.log', + '--makefile': None, + '--markdown': False, + '--no-auto-download': False, + '--no-priority': False, + '--no-warn': None, + '--only-groups': False, + '--only-names': False, + '--only-pre': False, + '--out-dir': '.', + '--output-name-first': False, + '--plot-config': 'kibot/yaml/kibot_pre_update_xml.yaml', + '--quick-start': False, + '--quiet': False, + '--rst': False, + '--schematic': None, + '--skip-pre': None, + '--start': '.', + '--stop-on-warnings': False, + '--sub-pcbs': False, + '--type': [], + '--variant': [], + '--verbose': 0, + '--version': False, + '--warn-ci-cd': False, + 'TARGET': []} (kibot - __main__.py:445) +DEBUG:- Processing dependencies for `global` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'Colorama', 'python_module': True, 'role': 'Get color messages in a portable way', 'debian': 'python3-colorama', 'arch': 'python-colorama'}, {'name': 'Requests', 'python_module': True, 'role': 'mandatory', 'debian': 'python3-requests', 'arch': 'python-requests'}, {'name': 'PyYAML', 'python_module': True, 'debian': 'python3-yaml', 'arch': 'python-yaml', 'module_name': 'yaml', 'role': 'mandatory'}, {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto'}, {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git'}, {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'RSVG', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}]}, {'name': 'Ghostscript', 'url': 'https://www.ghostscript.com/', 'url_down': 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases', 'debian': 'ghostscript', 'arch': 'ghostscript', 'command': 'gs', 'downloader': 'gs'}, {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy']}, {'name': 'KiCost', 'github': 'hildogjr/KiCost', 'pypi': 'KiCost', 'downloader': 'pytool'}, {'name': 'LXML', 'python_module': True, 'debian': 'python3-lxml', 'arch': 'python-lxml', 'downloader': 'python'}, {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0'}, {'from': 'KiKit', 'role': 'Separate multiboard projects'}, {'name': 'Xvfbwrapper', 'python_module': True, 'debian': 'python3-xvfbwrapper', 'arch': 'python-xvfbwrapper', 'downloader': 'python'}, {'name': 'Xvfb', 'url': 'https://www.x.org', 'command': 'xvfb-run', 'debian': 'xvfb', 'arch': 'xorg-server-xvfb', 'no_cmd_line_version': True}, {'name': 'Bash', 'url': 'https://www.gnu.org/software/bash/', 'debian': 'bash', 'arch': 'bash'}, {'name': 'Blender', 'url': 'https://www.blender.org/', 'debian': 'blender', 'arch': 'blender'}, {'name': 'Lark', 'python_module': True, 'role': 'mandatory', 'debian': 'python3-lark', 'arch': 'python-lark'}, {'name': 'ZStd', 'python_module': True, 'debian': 'python3-zstd', 'arch': 'python-zstd', 'downloader': 'python', 'role': 'Copy embedded files from the schematic to the KiCad cache'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'Colorama', 'python_module': True, 'role': 'Get color messages in a portable way', 'debian': 'python3-colorama', 'arch': 'python-colorama'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'name': 'Requests', 'python_module': True, 'role': 'mandatory', 'debian': 'python3-requests', 'arch': 'python-requests'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'name': 'PyYAML', 'python_module': True, 'debian': 'python3-yaml', 'arch': 'python-yaml', 'module_name': 'yaml', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering base dep {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'RSVG', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}]} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'Ghostscript', 'url': 'https://www.ghostscript.com/', 'url_down': 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases', 'debian': 'ghostscript', 'arch': 'ghostscript', 'command': 'gs', 'downloader': 'gs'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy']} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'KiCost', 'github': 'hildogjr/KiCost', 'pypi': 'KiCost', 'downloader': 'pytool'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'LXML', 'python_module': True, 'debian': 'python3-lxml', 'arch': 'python-lxml', 'downloader': 'python'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering dep {'from': 'KiKit', 'role': 'Separate multiboard projects'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiKit: {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0', 'from': 'KiKit', 'role': 'Separate multiboard projects'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering base dep {'name': 'Xvfbwrapper', 'python_module': True, 'debian': 'python3-xvfbwrapper', 'arch': 'python-xvfbwrapper', 'downloader': 'python'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'Xvfb', 'url': 'https://www.x.org', 'command': 'xvfb-run', 'debian': 'xvfb', 'arch': 'xorg-server-xvfb', 'no_cmd_line_version': True} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'Bash', 'url': 'https://www.gnu.org/software/bash/', 'debian': 'bash', 'arch': 'bash'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering base dep {'name': 'Blender', 'url': 'https://www.blender.org/', 'debian': 'blender', 'arch': 'blender'} (kibot - dep_downloader.py:1084) +DEBUG: - Registering dep {'name': 'Lark', 'python_module': True, 'role': 'mandatory', 'debian': 'python3-lark', 'arch': 'python-lark'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'name': 'ZStd', 'python_module': True, 'debian': 'python3-zstd', 'arch': 'python-zstd', 'downloader': 'python', 'role': 'Copy embedded files from the schematic to the KiCad cache'} (kibot - dep_downloader.py:1081) +DEBUG:Importing from /usr/local/lib/python3.13/dist-packages/kibot (kibot - kiplot.py:83) +DEBUG:- Importing fil_base (kibot - kiplot.py:91) +DEBUG:- Importing fil_expand_text_vars (kibot - kiplot.py:91) +DEBUG:- Importing fil_field_modify (kibot - kiplot.py:91) +DEBUG:- Importing fil_field_rename (kibot - kiplot.py:91) +DEBUG:- Importing fil_generic (kibot - kiplot.py:91) +DEBUG:- Importing fil_rot_footprint (kibot - kiplot.py:91) +DEBUG:- Importing fil_separate_pins (kibot - kiplot.py:91) +DEBUG:- Importing fil_spec_to_field (kibot - kiplot.py:91) +DEBUG:- Importing fil_subparts (kibot - kiplot.py:91) +DEBUG:- Importing fil_urlify (kibot - kiplot.py:91) +DEBUG:- Importing fil_value_split (kibot - kiplot.py:91) +DEBUG:- Importing fil_var_rename (kibot - kiplot.py:91) +DEBUG:- Importing fil_var_rename_kicost (kibot - kiplot.py:91) +DEBUG:- Importing globals (kibot - kiplot.py:91) +DEBUG:- Importing out_any_diff (kibot - kiplot.py:91) +DEBUG:- Importing out_any_drill (kibot - kiplot.py:91) +DEBUG:- Importing out_any_layer (kibot - kiplot.py:91) +DEBUG:- Importing out_any_navigate_results (kibot - kiplot.py:91) +DEBUG:- Importing out_any_pcb_print (kibot - kiplot.py:91) +DEBUG:- Importing out_any_sch_print (kibot - kiplot.py:91) +DEBUG:- Importing out_any_stencil (kibot - kiplot.py:91) +DEBUG:- Importing out_base (kibot - kiplot.py:91) +DEBUG:- Importing out_base_3d (kibot - kiplot.py:91) +DEBUG:- Importing out_blender_export (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_blender_export` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'Blender', 'role': 'mandatory', 'version': '3.4.0'}, {'from': 'ImageMagick', 'role': 'Automatically crop images'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'Blender', 'role': 'mandatory', 'version': '3.4.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Blender: {'name': 'Blender', 'url': 'https://www.blender.org/', 'debian': 'blender', 'arch': 'blender', 'from': 'Blender', 'role': 'mandatory', 'version': '3.4.0'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Automatically crop images'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Automatically crop images'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_boardview (kibot - kiplot.py:91) +DEBUG:- Importing out_bom (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_bom` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiCost', 'role': 'Find components costs and specs', 'version': '1.1.8'}, {'from': 'RSVG', 'role': 'SVG logos for the BoM'}, {'name': 'XLSXWriter', 'role': 'Create XLSX files', 'python_module': True, 'debian': 'python3-xlsxwriter', 'arch': 'python-xlsxwriter', 'version': '1.1.2', 'downloader': 'python'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiCost', 'role': 'Find components costs and specs', 'version': '1.1.8'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiCost: {'name': 'KiCost', 'github': 'hildogjr/KiCost', 'pypi': 'KiCost', 'downloader': 'pytool', 'from': 'KiCost', 'role': 'Find components costs and specs', 'version': '1.1.8'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'SVG logos for the BoM'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'RSVG', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'SVG logos for the BoM'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'name': 'XLSXWriter', 'role': 'Create XLSX files', 'python_module': True, 'debian': 'python3-xlsxwriter', 'arch': 'python-xlsxwriter', 'version': '1.1.2', 'downloader': 'python'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_bom_labels (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_bom_labels` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'ReportLab', 'role': 'Create a PDF with BoM labels', 'python_module': True, 'debian': 'python3-reportlab', 'arch': 'python-reportlab', 'downloader': 'python'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'ReportLab', 'role': 'Create a PDF with BoM labels', 'python_module': True, 'debian': 'python3-reportlab', 'arch': 'python-reportlab', 'downloader': 'python'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_compress (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_compress` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'RAR', 'url': 'https://www.rarlab.com/', 'url_down': 'https://www.rarlab.com/download.htm', 'help_option': '-?', 'downloader': 'rar', 'role': 'Compress in RAR format', 'debian': 'rar', 'arch': 'rar(AUR)'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'RAR', 'url': 'https://www.rarlab.com/', 'url_down': 'https://www.rarlab.com/download.htm', 'help_option': '-?', 'downloader': 'rar', 'role': 'Compress in RAR format', 'debian': 'rar', 'arch': 'rar(AUR)'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_copy_files (kibot - kiplot.py:91) +DEBUG:- Importing out_diff (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_diff` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'KiCad PCB/SCH Diff', 'version': '2.5.3', 'role': 'mandatory', 'github': 'INTI-CMNB/KiDiff', 'command': 'kicad-diff.py', 'pypi': 'kidiff', 'downloader': 'pytool', 'id': 'KiDiff'}, {'from': 'Git', 'role': 'Compare with files in the repo'}, {'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'KiCad PCB/SCH Diff', 'version': '2.5.3', 'role': 'mandatory', 'github': 'INTI-CMNB/KiDiff', 'command': 'kicad-diff.py', 'pypi': 'kidiff', 'downloader': 'pytool', 'id': 'KiDiff'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Compare with files in the repo'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Compare with files in the repo'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_download_datasheets (kibot - kiplot.py:91) +DEBUG:- Importing out_dxf (kibot - kiplot.py:91) +DEBUG:- Importing out_dxf_sch_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_dxf_sch_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_excellon (kibot - kiplot.py:91) +DEBUG:- Importing out_export_3d (kibot - kiplot.py:91) +DEBUG:- Importing out_gencad (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_gencad` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.5'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.5'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.5'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_gerb_drill (kibot - kiplot.py:91) +DEBUG:- Importing out_gerber (kibot - kiplot.py:91) +DEBUG:- Importing out_hpgl (kibot - kiplot.py:91) +DEBUG:- Importing out_hpgl_sch_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_hpgl_sch_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_ibom (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_ibom` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'Interactive HTML BoM', 'role': 'mandatory', 'github': 'INTI-CMNB/InteractiveHtmlBom', 'command': 'generate_interactive_bom.py', 'no_cmd_line_version_old': True, 'plugin_dirs': ['InteractiveHtmlBom', 'InteractiveHtmlBom/InteractiveHtmlBom', 'org_openscopeproject_InteractiveHtmlBom', 'org_openscopeproject_InteractiveHtmlBom/InteractiveHtmlBom'], 'version': '2.7.0', 'downloader': 'pytool', 'id': 'ibom'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'Interactive HTML BoM', 'role': 'mandatory', 'github': 'INTI-CMNB/InteractiveHtmlBom', 'command': 'generate_interactive_bom.py', 'no_cmd_line_version_old': True, 'plugin_dirs': ['InteractiveHtmlBom', 'InteractiveHtmlBom/InteractiveHtmlBom', 'org_openscopeproject_InteractiveHtmlBom', 'org_openscopeproject_InteractiveHtmlBom/InteractiveHtmlBom'], 'version': '2.7.0', 'downloader': 'pytool', 'id': 'ibom'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_info (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_info` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'Show KiAuto installation information', 'version': '2.0.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'Show KiAuto installation information', 'version': '2.0.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'Show KiAuto installation information', 'version': '2.0.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_ipc2581 (kibot - kiplot.py:91) +DEBUG:- Importing out_jobset (kibot - kiplot.py:91) +DEBUG:- Importing out_kibom (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_kibom` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'KiBoM', 'role': 'mandatory', 'github': 'INTI-CMNB/KiBoM', 'command': 'KiBOM_CLI.py', 'version': '1.9.1', 'downloader': 'pytool'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'KiBoM', 'role': 'mandatory', 'github': 'INTI-CMNB/KiBoM', 'command': 'KiBOM_CLI.py', 'version': '1.9.1', 'downloader': 'pytool'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_kicanvas (kibot - kiplot.py:91) +DEBUG:- Importing out_kicost (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_kicost` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiCost', 'role': 'mandatory', 'version': '1.1.7'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiCost', 'role': 'mandatory', 'version': '1.1.7'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiCost: {'name': 'KiCost', 'github': 'hildogjr/KiCost', 'pypi': 'KiCost', 'downloader': 'pytool', 'from': 'KiCost', 'role': 'mandatory', 'version': '1.1.7'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_kikit_present (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_kikit_present` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'markdown2', 'python_module': True, 'debian': 'python3-markdown2', 'arch': 'python-markdown2', 'role': 'mandatory'}, {'from': 'Git', 'role': 'Find commit hash and/or date'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'markdown2', 'python_module': True, 'debian': 'python3-markdown2', 'arch': 'python-markdown2', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_kiri (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_kiri` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'KiCad PCB/SCH Diff', 'version': '2.5.1', 'role': 'mandatory', 'github': 'INTI-CMNB/KiDiff', 'command': 'kicad-diff.py', 'pypi': 'kidiff', 'downloader': 'pytool', 'id': 'KiDiff'}, {'from': 'Git', 'role': 'Compare with files in the repo'}, {'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'KiCad PCB/SCH Diff', 'version': '2.5.1', 'role': 'mandatory', 'github': 'INTI-CMNB/KiDiff', 'command': 'kicad-diff.py', 'pypi': 'kidiff', 'downloader': 'pytool', 'id': 'KiDiff'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Compare with files in the repo'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Compare with files in the repo'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'Compare schematics', 'version': '2.2.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_navigate_results (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_navigate_results` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'RSVG', 'role': 'Create outputs preview', 'id': 'rsvg1'}, {'from': 'RSVG', 'role': 'Create PNG icons', 'id': 'rsvg2'}, {'from': 'Ghostscript', 'role': 'Create outputs preview'}, {'from': 'ImageMagick', 'role': 'Create outputs preview'}, {'from': 'Git', 'role': 'Find origin url'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create outputs preview', 'id': 'rsvg1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'rsvg1', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create PNG icons', 'id': 'rsvg2'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'rsvg2', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create PNG icons'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Ghostscript', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Ghostscript: {'name': 'Ghostscript', 'url': 'https://www.ghostscript.com/', 'url_down': 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases', 'debian': 'ghostscript', 'arch': 'ghostscript', 'command': 'gs', 'downloader': 'gs', 'from': 'Ghostscript', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find origin url'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find origin url'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_navigate_results_rb (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_navigate_results_rb` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'RSVG', 'role': 'Create outputs preview', 'id': 'rsvg1'}, {'from': 'RSVG', 'role': 'Create PNG icons', 'id': 'rsvg2'}, {'from': 'Ghostscript', 'role': 'Create outputs preview'}, {'from': 'ImageMagick', 'role': 'Create outputs preview'}, {'from': 'Git', 'role': 'Find origin url'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create outputs preview', 'id': 'rsvg1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'rsvg1', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create PNG icons', 'id': 'rsvg2'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'rsvg2', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create PNG icons'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Ghostscript', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Ghostscript: {'name': 'Ghostscript', 'url': 'https://www.ghostscript.com/', 'url_down': 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases', 'debian': 'ghostscript', 'arch': 'ghostscript', 'command': 'gs', 'downloader': 'gs', 'from': 'Ghostscript', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Create outputs preview'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find origin url'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find origin url'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_netlist (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_netlist` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.0.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.0.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.0.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_odb (kibot - kiplot.py:91) +DEBUG:- Importing out_panelize (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_panelize` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiKit', 'role': 'mandatory', 'version': '1.5.1'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiKit', 'role': 'mandatory', 'version': '1.5.1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiKit: {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0', 'from': 'KiKit', 'role': 'mandatory', 'version': '1.5.1'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_pcb2blender_tools (kibot - kiplot.py:91) +DEBUG:- Importing out_pcb_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_pcb_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'RSVG', 'role': 'Create PDF, PNG, PS and EPS formats', 'id': 'rsvg1'}, {'from': 'Ghostscript', 'role': 'Create PNG, PS and EPS formats'}, {'from': 'ImageMagick', 'role': 'Create monochrome prints and scaled PNG files'}, {'from': 'KiAuto', 'command': 'pcbnew_do', 'role': 'Print the page frame in GUI mode', 'version': '1.6.7'}, {'from': 'LXML', 'role': 'mandatory'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create PDF, PNG, PS and EPS formats', 'id': 'rsvg1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'rsvg1', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create PDF, PNG, PS and EPS formats'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Ghostscript', 'role': 'Create PNG, PS and EPS formats'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Ghostscript: {'name': 'Ghostscript', 'url': 'https://www.ghostscript.com/', 'url_down': 'https://github.com/ArtifexSoftware/ghostpdl-downloads/releases', 'debian': 'ghostscript', 'arch': 'ghostscript', 'command': 'gs', 'downloader': 'gs', 'from': 'Ghostscript', 'role': 'Create PNG, PS and EPS formats'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Create monochrome prints and scaled PNG files'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Create monochrome prints and scaled PNG files'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'KiAuto', 'command': 'pcbnew_do', 'role': 'Print the page frame in GUI mode', 'version': '1.6.7'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'Print the page frame in GUI mode', 'version': '1.6.7'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'LXML', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from LXML: {'name': 'LXML', 'python_module': True, 'debian': 'python3-lxml', 'arch': 'python-lxml', 'downloader': 'python', 'from': 'LXML', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_pcb_stats (kibot - kiplot.py:91) +DEBUG:- Importing out_pcb_variant (kibot - kiplot.py:91) +DEBUG:- Importing out_pcbdraw (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_pcbdraw` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'RSVG', 'role': 'Create PNG, JPG and BMP images'}, {'from': 'ImageMagick', 'role': 'Create JPG and BMP images'}, {'from': 'LXML', 'role': 'mandatory'}, {'name': 'numpy', 'python_module': True, 'debian': 'python3-numpy', 'arch': 'python-numpy', 'downloader': 'python', 'role': 'Automatically adjust SVG margin'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'RSVG', 'role': 'Create PNG, JPG and BMP images'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from RSVG: {'name': 'RSVG tools', 'url': 'https://gitlab.gnome.org/GNOME/librsvg', 'debian': 'librsvg2-bin', 'arch': 'librsvg', 'command': 'rsvg-convert', 'downloader': 'rsvg', 'id': 'RSVG', 'tests': [{'command': ['convert', '-list', 'font'], 'search': 'Helvetica', 'error': 'Missing Helvetica font, try installing Ghostscript fonts'}], 'from': 'RSVG', 'role': 'Create PNG, JPG and BMP images'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Create JPG and BMP images'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Create JPG and BMP images'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'LXML', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from LXML: {'name': 'LXML', 'python_module': True, 'debian': 'python3-lxml', 'arch': 'python-lxml', 'downloader': 'python', 'from': 'LXML', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'name': 'numpy', 'python_module': True, 'debian': 'python3-numpy', 'arch': 'python-numpy', 'downloader': 'python', 'role': 'Automatically adjust SVG margin'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_pdf (kibot - kiplot.py:91) +DEBUG:- Importing out_pdf_pcb_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_pdf_pcb_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_pdf_sch_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_pdf_sch_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_pdfunite (kibot - kiplot.py:91) +DEBUG:- Importing out_populate (kibot - kiplot.py:91) +DEBUG:- Importing out_position (kibot - kiplot.py:91) +DEBUG:- Importing out_ps (kibot - kiplot.py:91) +DEBUG:- Importing out_ps_sch_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_ps_sch_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_qr_lib (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_qr_lib` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'QRCodeGen', 'role': 'mandatory', 'python_module': True, 'downloader': 'python', 'debian': 'python3-qrcodegen'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'QRCodeGen', 'role': 'mandatory', 'python_module': True, 'downloader': 'python', 'debian': 'python3-qrcodegen'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_render_3d (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_render_3d` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.1'}, {'from': 'ImageMagick', 'role': 'Automatically crop images'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.1'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'ImageMagick', 'role': 'Automatically crop images'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from ImageMagick: {'name': 'ImageMagick', 'url': 'https://imagemagick.org/', 'url_down': 'https://imagemagick.org/script/download.php', 'command': 'convert', 'downloader': 'convert', 'debian': 'imagemagick', 'arch': 'imagemagick', 'extra_arch': ['gsfonts'], 'extra_checks': ['check_imagick_policy'], 'from': 'ImageMagick', 'role': 'Automatically crop images'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_report (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_report` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'name': 'Pandoc', 'role': 'Create PDF/ODF/DOCX files', 'url': 'https://pandoc.org/', 'url_down': 'https://github.com/jgm/pandoc/releases', 'debian': 'pandoc', 'arch': 'pandoc', 'extra_deb': ['texlive', 'texlive-latex-base', 'texlive-latex-recommended'], 'extra_arch': ['texlive-core'], 'comments': 'In CI/CD environments: the `kicad_auto_test` docker image contains it.'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'name': 'Pandoc', 'role': 'Create PDF/ODF/DOCX files', 'url': 'https://pandoc.org/', 'url_down': 'https://github.com/jgm/pandoc/releases', 'debian': 'pandoc', 'arch': 'pandoc', 'extra_deb': ['texlive', 'texlive-latex-base', 'texlive-latex-recommended'], 'extra_arch': ['texlive-core'], 'comments': 'In CI/CD environments: the `kicad_auto_test` docker image contains it.'} (kibot - dep_downloader.py:1081) +DEBUG:- Importing out_sch_variant (kibot - kiplot.py:91) +DEBUG:- Importing out_stencil_3d (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_stencil_3d` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiKit', 'role': 'mandatory'}, {'name': 'OpenSCAD', 'url': 'https://openscad.org/', 'url_down': 'https://openscad.org/downloads.html', 'command': 'openscad', 'debian': 'openscad', 'arch': 'openscad', 'role': 'mandatory'}, {'from': 'Xvfbwrapper', 'role': 'mandatory'}, {'from': 'Xvfb', 'role': 'mandatory'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiKit', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiKit: {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0', 'from': 'KiKit', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'name': 'OpenSCAD', 'url': 'https://openscad.org/', 'url_down': 'https://openscad.org/downloads.html', 'command': 'openscad', 'debian': 'openscad', 'arch': 'openscad', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'from': 'Xvfbwrapper', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Xvfbwrapper: {'name': 'Xvfbwrapper', 'python_module': True, 'debian': 'python3-xvfbwrapper', 'arch': 'python-xvfbwrapper', 'downloader': 'python', 'from': 'Xvfbwrapper', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Xvfb', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Xvfb: {'name': 'Xvfb', 'url': 'https://www.x.org', 'command': 'xvfb-run', 'debian': 'xvfb', 'arch': 'xorg-server-xvfb', 'no_cmd_line_version': True, 'from': 'Xvfb', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_stencil_for_jig (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_stencil_for_jig` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiKit', 'role': 'mandatory'}, {'name': 'OpenSCAD', 'url': 'https://openscad.org/', 'url_down': 'https://openscad.org/downloads.html', 'command': 'openscad', 'debian': 'openscad', 'arch': 'openscad', 'role': 'mandatory'}, {'from': 'Xvfbwrapper', 'role': 'mandatory'}, {'from': 'Xvfb', 'role': 'mandatory'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiKit', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiKit: {'name': 'KiKit', 'github': 'INTI-CMNB/KiKit', 'pypi': 'KiKit', 'downloader': 'pytool', 'version_k6': '1.5.0', 'version_k7': '1.6.0', 'version_k9': '1.7.0', 'from': 'KiKit', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'name': 'OpenSCAD', 'url': 'https://openscad.org/', 'url_down': 'https://openscad.org/downloads.html', 'command': 'openscad', 'debian': 'openscad', 'arch': 'openscad', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Registering dep {'from': 'Xvfbwrapper', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Xvfbwrapper: {'name': 'Xvfbwrapper', 'python_module': True, 'debian': 'python3-xvfbwrapper', 'arch': 'python-xvfbwrapper', 'downloader': 'python', 'from': 'Xvfbwrapper', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Xvfb', 'role': 'mandatory'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Xvfb: {'name': 'Xvfb', 'url': 'https://www.x.org', 'command': 'xvfb-run', 'debian': 'xvfb', 'arch': 'xorg-server-xvfb', 'no_cmd_line_version': True, 'from': 'Xvfb', 'role': 'mandatory'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_step (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_step` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.1', 'command': 'kicad2step_do'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.1', 'command': 'kicad2step_do'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'kicad2step_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.1'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_svg (kibot - kiplot.py:91) +DEBUG:- Importing out_svg_pcb_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_svg_pcb_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '1.6.7'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_svg_sch_print (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_svg_sch_print` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.3.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing out_vrml (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `out_vrml` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '2.1.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '2.1.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.1.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_annotate_pcb (kibot - kiplot.py:91) +DEBUG:- Importing pre_annotate_power (kibot - kiplot.py:91) +DEBUG:- Importing pre_any_replace (kibot - kiplot.py:91) +DEBUG:- Importing pre_any_xrc (kibot - kiplot.py:91) +DEBUG:- Importing pre_base (kibot - kiplot.py:91) +DEBUG:- Importing pre_check_fields (kibot - kiplot.py:91) +DEBUG:- Importing pre_check_zone_fills (kibot - kiplot.py:91) +DEBUG:- Importing pre_consolidate_pcbs (kibot - kiplot.py:91) +DEBUG:- Importing pre_convert_pcb (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_convert_pcb` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.2'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.2'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.3.2'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_draw_fancy_stackup (kibot - kiplot.py:91) +DEBUG:- Importing pre_draw_stackup (kibot - kiplot.py:91) +DEBUG:- Importing pre_drc (kibot - kiplot.py:91) +DEBUG:- Importing pre_erc (kibot - kiplot.py:91) +DEBUG:- Importing pre_erc_warnings (kibot - kiplot.py:91) +DEBUG:- Importing pre_fill_zones (kibot - kiplot.py:91) +DEBUG:- Importing pre_filters (kibot - kiplot.py:91) +DEBUG:- Importing pre_ignore_unconnected (kibot - kiplot.py:91) +DEBUG:- Importing pre_include_table (kibot - kiplot.py:91) +DEBUG:- Importing pre_pcb_replace (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_pcb_replace` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'Git', 'role': 'Find commit hash and/or date'}, {'from': 'Bash', 'role': 'Run external commands to create replacement text'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Bash: {'name': 'Bash', 'url': 'https://www.gnu.org/software/bash/', 'debian': 'bash', 'arch': 'bash', 'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_run_drc (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_run_drc` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'version': '2.0.0'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'version': '2.0.0'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'pcbnew_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.0.0'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_run_erc (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_run_erc` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.2.1'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '2.2.1'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '2.2.1'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_sch_replace (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_sch_replace` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'Git', 'role': 'Find commit hash and/or date'}, {'from': 'Bash', 'role': 'Run external commands to create replacement text'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Bash: {'name': 'Bash', 'url': 'https://www.gnu.org/software/bash/', 'debian': 'bash', 'arch': 'bash', 'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_set_text_variables (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_set_text_variables` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'Git', 'role': 'Find commit hash and/or date'}, {'from': 'Bash', 'role': 'Run external commands to create replacement text'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Git: {'name': 'Git', 'url': 'https://git-scm.com/', 'downloader': 'git', 'debian': 'git', 'arch': 'git', 'from': 'Git', 'role': 'Find commit hash and/or date'} (kibot - dep_downloader.py:1009) +DEBUG: - Registering dep {'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from Bash: {'name': 'Bash', 'url': 'https://www.gnu.org/software/bash/', 'debian': 'bash', 'arch': 'bash', 'from': 'Bash', 'role': 'Run external commands to create replacement text'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing pre_update_footprint (kibot - kiplot.py:91) +DEBUG:- Importing pre_update_pcb_characteristics (kibot - kiplot.py:91) +DEBUG:- Importing pre_update_qr (kibot - kiplot.py:91) +DEBUG:- Importing pre_update_stackup (kibot - kiplot.py:91) +DEBUG:- Importing pre_update_xml (kibot - kiplot.py:91) +DEBUG:- Processing dependencies for `pre_update_xml` (kibot - dep_downloader.py:1069) +DEBUG: - Data: {'Dependencies': [{'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '1.5.4'}]} (kibot - dep_downloader.py:1070) +DEBUG: - Registering dep {'from': 'KiAuto', 'role': 'mandatory', 'command': 'eeschema_do', 'version': '1.5.4'} (kibot - dep_downloader.py:1081) +DEBUG: - Dep after applying from KiAuto: {'name': 'KiCad Automation tools', 'github': 'INTI-CMNB/KiAuto', 'command': 'eeschema_do', 'pypi': 'kiauto', 'downloader': 'pytool', 'id': 'KiAuto', 'from': 'KiAuto', 'role': 'mandatory', 'version': '1.5.4'} (kibot - dep_downloader.py:1009) +DEBUG:- Importing var_base (kibot - kiplot.py:91) +DEBUG:- Importing var_ibom (kibot - kiplot.py:91) +DEBUG:- Importing var_kibom (kibot - kiplot.py:91) +DEBUG:- Importing var_kicost (kibot - kiplot.py:91) +DEBUG:Deactivating macros (kibot - kiplot.py:117) +DEBUG:End of initialization (kibot - __main__.py:537) +DEBUG:Using configuration file: `kibot/yaml/kibot_pre_update_xml.yaml` (kibot - __main__.py:276) +Using SCH file: Test_6.kicad_sch +DEBUG:Using schematic: `/workspace/jkrauss/Test_6/Test_6.kicad_sch` (kibot - kiplot.py:979) +DEBUG:Real schematic name: `/workspace/jkrauss/Test_6/Test_6.kicad_sch` (kibot - kiplot.py:980) +DEBUG:Using PCB: `/workspace/jkrauss/Test_6/Test_6.kicad_pcb` (kibot - kiplot.py:1010) +DEBUG:Real PCB name: `/workspace/jkrauss/Test_6/Test_6.kicad_pcb` (kibot - kiplot.py:1011) +DEBUG:Starting to load the configuration (kibot - __main__.py:607) +DEBUG:Parsing global options: {} (kibot - config_reader.py:301) +DEBUG:Looking for stack-up information in the PCB (kibot.globals - globals.py:500) +DEBUG:- Found stack-up information (kibot.globals - globals.py:516) +DEBUG:- F.SilkS color: White (kibot.globals - globals.py:471) +DEBUG:- F.Mask color: Green (kibot.globals - globals.py:479) +DEBUG:- B.Mask color: Green (kibot.globals - globals.py:483) +DEBUG:- B.SilkS color: White (kibot.globals - globals.py:475) +DEBUG:- Copper finish: ENIG (kibot.globals - globals.py:531) +DEBUG:- Impedance controlled: no (kibot.globals - globals.py:543) +DEBUG:- PCB Material/s: FR4 (kibot.globals - globals.py:552) +DEBUG:- Copper thickness: 35 / 15 (kibot.globals - globals.py:554) +DEBUG:Configuring from default: filters -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: aliases_for_3d_models -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: extra_os -> [] (kibot - optionable.py:362) +DEBUG:Configuring from default: environment -> (kibot - optionable.py:362) +DEBUG:Configuring from default: field_tolerance -> ['tolerance', 'tol'] (kibot - optionable.py:598) +DEBUG:Configuring from default: field_voltage -> ['voltage', 'v'] (kibot - optionable.py:598) +DEBUG:Configuring from default: field_package -> ['package', 'pkg'] (kibot - optionable.py:598) +DEBUG:Configuring from default: field_temp_coef -> ['temp_coef', 'tmp_coef'] (kibot - optionable.py:598) +DEBUG:Configuring from default: field_power -> ['power', 'pow'] (kibot - optionable.py:598) +DEBUG:Configuring from default: field_current -> ['current', 'i'] (kibot - optionable.py:598) +DEBUG:Configuring from default: layer_defaults -> [] (kibot - optionable.py:362) +DEBUG:Parsing preflight options: {'update_xml': True} (kibot - config_reader.py:283) +DEBUG:Parsing preflight update_xml (kibot - config_reader.py:292) +DEBUG:No font resources dir (kibot - kiplot.py:1257) +DEBUG:No color resources dir (kibot - kiplot.py:1278) +DEBUG:Starting outputs for board /workspace/jkrauss/Test_6/Test_6.kicad_pcb (kibot - kiplot.py:667) +DEBUG:Outputs before preflights: [] (kibot - kiplot.py:714) +DEBUG:Preflight checks (kibot - kiplot.py:548) +DEBUG:Configuring preflight update_xml (kibot.pre_base - pre_base.py:145) +DEBUG:Preflight apply update_xml (kibot.pre_base - pre_base.py:161) +DEBUG:Preflight run update_xml (kibot.pre_base - pre_base.py:165) +DEBUG:Starting tool check for KiCad Automation tools (kibot - dep_downloader.py:863) +DEBUG:- Checking binary tool KiCad Automation tools (kibot - dep_downloader.py:769) +DEBUG:- Looking for tool `eeschema_do` at system level (kibot - dep_downloader.py:697) +DEBUG:- Checking version for `/usr/local/bin/eeschema_do` (kibot - dep_downloader.py:664) +DEBUG:- Needed version (1, 5, 4) (kibot - dep_downloader.py:680) +DEBUG:- Running ['/usr/local/bin/eeschema_do', '--version'] (kibot - dep_downloader.py:630) +DEBUG:- Looking for version in `eeschema_do 2.3.6 - Copyright 2018-2024, INTI/Productize SPRL - License: +Apache 2.0` (kibot - dep_downloader.py:656) +DEBUG:- Found version (2, 3, 6, 0) (kibot - dep_downloader.py:691) +DEBUG:- Returning `/usr/local/bin/eeschema_do` (kibot - dep_downloader.py:870) +DEBUG:Expanding `/workspace/jkrauss/Test_6/.` in SCH context for update_xml: True parent: None (kibot - optionable.py:493) +DEBUG:Current text variables: {'ASSEMBLY_NAME': '', 'ASSEMBLY_NUMBER': '', 'ASSEMBLY_SCALE': '', 'COMPANY': 'Asymworks, LLC', 'DESIGNER': 'JPK', 'DWG_NUMBER_PCB': '', 'DWG_NUMBER_SCH': '', 'DWG_TITLE_ASSY': '', 'DWG_TITLE_PCB': '', 'DWG_TITLE_SCH': '', 'GIT_HASH': '', 'GIT_HASH_PCB': '', 'GIT_HASH_SCH': '', 'GIT_URL': '', 'PROJECT_CODE': '', 'RELEASE_DATE': '', 'RELEASE_STATE': '', 'REVISION': '${REVISION}', 'SCALE': '1:1', 'SHEET_NAME_01': 'Cover Page', 'SHEET_NAME_02': 'Block Diagram', 'SHEET_NAME_03': 'Project Architecture', 'SHEET_NAME_04': 'Circuit 1', 'SHEET_NAME_05': 'Circuit 2', 'SHEET_NAME_06': 'Circuit 3', 'SHEET_NAME_07': 'Parts List', 'SHEET_NAME_08': '......................................', 'SHEET_NAME_09': '......................................', 'SHEET_NAME_10': '......................................', 'SHEET_NAME_11': '......................................', 'SHEET_NAME_12': '......................................', 'SHEET_NAME_13': '......................................', 'SHEET_NAME_14': '......................................', 'SHEET_NAME_15': '......................................', 'SHEET_NAME_16': '......................................', 'SHEET_NAME_17': '......................................', 'SHEET_NAME_18': '......................................', 'SHEET_NAME_19': '......................................', 'SHEET_NAME_20': '......................................', 'STATE': 'TEMPLATE', 'VARIANT': ''} (kibot.gs - gs.py:290) +DEBUG:Expanded `/workspace/jkrauss/Test_6/.` (kibot - optionable.py:539) +- Updating BoM in XML format +DEBUG:Executing: /usr/local/bin/eeschema_do bom_xml /workspace/jkrauss/Test_6/Test_6.kicad_sch /workspace/jkrauss/Test_6/. (kibot - kiplot.py:193) +DEBUG:Command line: ['/usr/local/bin/eeschema_do', 'bom_xml', '/workspace/jkrauss/Test_6/Test_6.kicad_sch', '/workspace/jkrauss/Test_6/.'] (kibot - kiplot.py:195) +DEBUG:Output from command: +> (kibot - kiplot.py:207) +DEBUG:Removing temporal files (kibot.pre_base - pre_base.py:275) +DEBUG:Outputs after preflights: [] (kibot - kiplot.py:717) +DEBUG:Outputs after sorting: [] (kibot - kiplot.py:721) diff --git a/mfg/assembly/Test_6-assembly_notes.txt b/mfg/assembly/Test_6-assembly_notes.txt new file mode 100644 index 0000000..506d09e --- /dev/null +++ b/mfg/assembly/Test_6-assembly_notes.txt @@ -0,0 +1,11 @@ +ASSEMBLY NOTES (UNLESS OTHERWISE SPECIFIED) + +1) DO NOT POPULATE COMPONENTS ARE MARKED WITH A RED CROSS + +2) DO NOT POPULATE COMPONENTS ARE NOT PRESENT IN THE BOM + +3) IF CONFLICTING INFORMATION IS FOUND BETWEEN THE ASSEMBLY + FILE AND BOM, BOM SHOULD BE USED AS THE MAIN SOURCE. + +4) DOT IDENTIFIES PIN #1 LOCATION AND DEVICE ORIENTATION + WHEN VIEWED FROM THE TOP. diff --git a/mfg/assembly/Test_6-bom.csv b/mfg/assembly/Test_6-bom.csv new file mode 100644 index 0000000..f5b03aa --- /dev/null +++ b/mfg/assembly/Test_6-bom.csv @@ -0,0 +1 @@ +Row,Quantity Per PCB,References,Value,Datasheet,Footprint,Description,Asymworks IPN,Manufacturer,Manufacturer PN,LCSC diff --git a/mfg/assembly/Test_6-bom.html b/mfg/assembly/Test_6-bom.html new file mode 100644 index 0000000..2b69a09 --- /dev/null +++ b/mfg/assembly/Test_6-bom.html @@ -0,0 +1,242 @@ + + + + Bill of Materials + + + + + + + + + + + + +
+ +
Bill of Materials
+
+ Schematic: Test_6
+ Variant: default
+ Revision: NO_TAG+ (Unreleased)
+ Date: 2026-03-10_16-52-47
+ KiCad Version: 9.0.7+1
+
+ Component Groups: 0
+ Component Count: 0 (per PCB)
+ + Fitted Components: 0 (per PCB)
+ Number of PCBs: 1
+ Total Components: 0 (for 1 PCBs)
+
+

Component Groups

+ + + + + + + + + + + + + + + + + + +
RowQuantity Per PCBReferencesValueDatasheetFootprintDescriptionAsymworks IPNManufacturerManufacturer PNLCSC
+ + + + + + +
Color reference for columns:
KiCad Fields (default)
Generated Fields
User Fields
Empty Fields
+ + \ No newline at end of file diff --git a/mfg/assembly/Test_6-components_count.csv b/mfg/assembly/Test_6-components_count.csv new file mode 100644 index 0000000..2a7f64c --- /dev/null +++ b/mfg/assembly/Test_6-components_count.csv @@ -0,0 +1,4 @@ +Type,Front Side,Back Side,Total +THT,0,0,0 +SMD,0,0,0 +Total,0,0,0 diff --git a/mfg/fab/Test_6-fabrication_notes.txt b/mfg/fab/Test_6-fabrication_notes.txt new file mode 100644 index 0000000..399ef3f --- /dev/null +++ b/mfg/fab/Test_6-fabrication_notes.txt @@ -0,0 +1,50 @@ +FABRICATION NOTES (UNLESS OTHERWISE SPECIFIED) + +1) FABRICATE PER IPC-6012A CLASS 2. + +2) OUTLINE DEFINED IN SEPARATE GERBER FILE WITH + "Edge_Cuts.GBR" SUFFIX. + +3) SEE SEPARATE DRILL FILES WITH ".DRL" SUFFIX + FOR HOLE LOCATIONS. + + SELECTED HOLE LOCATIONS SHOWN ON THIS DRAWING + FOR REFERENCE ONLY. + +4) SURFACE FINISH: ENIG + +5) SOLDERMASK ON BOTH SIDES OF THE BOARD SHALL + BE LPI, COLOR GREEN. + +6) SILK SCREEN LEGEND TO BE APPLIED PER LAYER + STACKUP USING WHITE NON-CONDUCTIVE EPOXY INK. + +7) ALL VIAS ARE TENTED ON BOTH SIDES UNLESS + SOLDERMASK OPENED IN GERBER. + +8) RESERVED + +9) PCB MATERIAL REQUIREMENTS: + + A. FLAMMABILITY RATING MUST MEET OR EXCEED + UL94V-0 REQUIREMENTS. + B. Tg 135 C OR EQUIVALENT. + +10) DESIGN GEOMETRY MINIMUM FEATURE SIZES: + + BOARD SIZE N/A × N/A mm + BOARD THICKNESS 1.647 mm + TRACE WIDTH N/A mm + TRACE TO TRACE 0.200 mm + MIN. HOLE (PTH) N/A mm + MIN. HOLE (NPTH) N/A mm + ANNULAR RING N/A mm + COPPER TO HOLE 0.250 mm + COPPER TO EDGE 0.500 mm + HOLE TO HOLE 0.250 mm + +11) ALL DIMENSIONS ARE IN MILLIMETERS UNLESS OTHERWISE + SPECIFIED. + +12) FOR REFERENCE ONLY THE STACKUP CORRESPONDS TO JLCPCB + STACKUP JLC04161H-7628. diff --git a/mfg/fab/Test_6-impedance_table.csv b/mfg/fab/Test_6-impedance_table.csv new file mode 100644 index 0000000..30b8667 --- /dev/null +++ b/mfg/fab/Test_6-impedance_table.csv @@ -0,0 +1,4 @@ +Layer,Ref1,Ref2,Type,Impedance [ohms],Width [mil],Space [mil],Tolerance +L1,AIR,L2,SE,50,13.75,-----,10% +L1,AIR,L2,DIFF,90,11.26,8.00,10% +L1,AIR,L2,DIFF,100,8.68,8.00,10% diff --git a/schematic/Test_6-schematic.pdf b/schematic/Test_6-schematic.pdf new file mode 100644 index 0000000000000000000000000000000000000000..17937879c9220d13c274a1c6c23cda045e6e25b2 GIT binary patch literal 844454 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 z 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

Rk~u@{xfO8D0uTS5G4R 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%0AJR96D^BnEm=p?FtZzy;g$Ozd14V;+!w|ynV{+ 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 z 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%0As6U}|3>KG zncbj-R?QizHnkaVlkfFYjZ@C2Ae;va>sZgzg#f@~{Y#Vzk(JSlY=SN^s7IqblPfjrLSi*%p zsjA?Axk}dKX!LpG3VNh}{$wRbmGhN<$K|Q^tO0pB;_tg(YEScm%6MV;fpK}W!pZDF~B%GU+Fx++SdP7F;Z{4Lj=;AP`9wb)?mZaA{0L>|pR`;#{Kdq&f zwc{wxy*Dz&QIkckyq*501S7ty^?J>I7}r17!TLGqo5$N0_MRel^X^u>2B(1$0-^{K zfN@7aBXZQ9MChXKjl7(3R9oT82Xpv9`Xj(*BBM0I>p*_1ojeibY*IY^tIuW#BK+>r z0e4`O^*2DNPA7)N52(tx8hHoYD>-=6uAO6`ZDE|#vJcShaI5Tdq6jca-J_&v zD7Hh@rL4kU46c}%`+#4xkhGZxn6OV1r29de56;^vY#&duHe4hNyMb2Ii(ujySUY8! zr92uT9O1qkQ3m&z@z2urT4~fFD37TA2;o7Wc<`4$5 zy(d|^#zYB|r7i{lZ>&JBAE0L%1Dv$aVdCovJW_;(qqtlKly_|*u6rNsu!c1c$;|02e+ zGow1P55JTxwz|RewZo?o3k)xv0g3S2^GV5d-xh%_j%!!SG{caeO)ir0m}gpEQaW{! z40&#TN?zWC^RnFj$&qoKW)-o24Oo0Xj-0`_naBfhFG&Yp?{sy-t89?nb?Yh?&Zuju zuI2;scoZ5t)b7<@}6UCLfj{_j}&1unvbtRjG<)>VCY#(J@e`!%oySL8u zIw1redp)9^Yc13ba$3`J3gj+lULPIu3A!VLc#7zP6z$B>J>#1g<_LtvIY96|fNas+ zx8#fy@2d+Y0h&$WsE|woxkGu4xELcCx z)RNztKDA8+R)OSo%@p=7sal*-Ex?cXa)K6KcL=wGJ|CndTus4b0p%%Y7NgVA^O6V{=&|D1kmKJ~l;LRePY-;3m07;K(owyhP3 zYQ9%q={QQ+VFO7NHEZtFg*;Ygz`hI0-UMK#>>lbm98}F3@i3a)oS1L*QsB(vU-{A7 zv!!86@?S0Bv-|OQ>H^+ke+1Ob$*Spn9h3OHifjDwjVx1hB3wJQB{FD{Wq9HS_jy-M zJh~Zf)v|DjhIkWE3fg|s?WLPx0dx)aqVFPGS>%Ydc-et``2pXj1*~{MwZSROmdkza z;Sc)vRhPqb_GqbK$WA7S=a7{(z#5nYruzmT!4>=E zxDh{)DF%2=ceuXQu3W8x5`URA3O!HVk_YWd!x9;jFXEgc#cx`_9!VeFy5Xgx{S?1h z&;MBJd9Bju18hF2t6J#0|9z)a8s@DH$o?F<(3kkRWxB+krc5s9aM;d5G<;Vj zZ#dJMrjv(GAj01-NbhT_zzcHo^ z@eD=_SX@*MFoJ?}TK)DsMM!JJC?k;4th42Rv*CMgi;Gzceb?E)9t;oH0i5N@4m6#K z9~!?EG>6p@QW4FH`_O5YkRGl}&8TS8bcRK2#*4_td)D|Cvgkv4Z+_&-OnV8@-A;?& z7^x}pRC}I2K3-Io2u**GvF4{l`FB`b-!R66|HARvDomQa7~{)c=#$Vf85H-Cxd4M2 zPml zw>Dh98n&JG!>NTBlBcW)xk9Oy5Rw&v@-k`JsPsNeGAF-&GzEq zRjLg8;Db}mC~=Gxrz=^O>07JxCIicCA=M2^>r9pU+qtQgN+mKS`@p~Hru9Zxn9X=@ z6K}+cI-Vo*wLBAOEWw-OONnuSy*t%MO-GAady|{bg|AGL31vR`^tZ9*!BeU#YU9gU z45r_b9zS#{* z({fL<)?lsV%ehiH?Cw<-s@}@evnAK>+BCWb)xZb0e)MiF-gY^C4E_0-T}9X!&#n)+ z`kVS39;83tn;ify{+W7Zn5t*(R5bC|af{y)D=tR)?@;~e59BA~J>?SUYv6l@QIn*v z8kV?+&5MzX!xLfj*D*mSfmA%JOWJaE4hN%@r^X9G{r(oFjWs`iIoZ^m%sO3Ex=``3 zjX4&jVK-N)ReijI2_H}~Ozk?E&b%zASOYNR0w!0C>dMFrn0xu(+}&|Qm)Ja~#cP(@ zTx)e+52*HpYibSCebM*6c6laeZh1*5Fs7%(-Ngge8C09Q6LUjO5YsnUvgW>8oP5vT7x$m@8SZBT6%*gO?9&Ycg{3nZGr>_Lgk_ofnI{`F*R53jq0K$2WRY); zl-0PEzWcwz`1-c?Oz*qOPF-DCPei)1$u5m_y|wFfhVKD^;U!N0WZH?B`my2cd!mJm zewO-%()H|^fk|#WHyPHN7lM@e?_YE1NxF@%0fx&nh(8Z(ckHNlDYJX6RSn_woeBMZ z=OXJF$cFWuj_}Sk0Mqt~h0=iBPrx!pvXD(j`+~l>E5)1O zog^g4>D%>)(QaiH`e0a73<|2FI_PO#$6kml$^ z#=p=b^4*=j)bGUPub-yZjy1(Uu9xD9SNP*8Mj{6dJ>fuGt4%0xsE@+nc#5cs5b=)( zt++htCFR1gOzl9QwM!ZzqUhB?>`%AyMkbl6x?H=lMBHv4sCC809@hzZnLl;9iT61~ zTAX*hjFqm~d1h-pCgkeRnfI~8DzonHM}`fRl!FTRbzB%utN~uROrA$@)@4Mw4*g2F z^?U|DII=z~iTcmM7*Sy9U+bayM4j?k^dctlNKKl=#zLR02f;wjRA5D7JpF8s0Te<1 zGrtDg^>?_$q z!u)$fXkxGJgRrBv+Jo*+-M=uv zlxCbd0$~?_`-@@yu0$30+2sLBmmxy>g#_4H8L~xdD}@Q4-o~sBAGBfi8A->V89p}m zs>5OBn|Qvuc2tp-@2xOFmMLdgwb7k6!@057f684G?B=?mn#O4M(O7K!_E48l|CqVK z?KHjO7vv2%7dRf}7nN$dWtO={FD+BZJ>c^Bi^cBl!)cI2Vhvjs@k|MgVjub!Th^Yw{T?LfPoefGH2wkzANZqM-l)BMB`Cfmxx;s8xRo<`669M{D8+Lg{tm^e^NOKtmy_Gl0o|L+H}QJ=P0J>afY9NZ*#i@g^_%ny9aS7(3i zPshn-N@De+^XA)q{>oA3DmhGYH?4KHtDn2bOD0q&L0`wjfAt(&(P-y1g)$YR$U=@b zHd<5VUV~CjKYw-;Ck+T0=XhQVz2Z`jYm!|=Hehs|Kx8numV%@ymLK-DGVSzx zY2wT+=Fiv>R)-(n5Vo|$peu-KZ83kVV)^5iC2pG)Z7RbyQ1O^9sAm_rHaBvYW-&tW z7X0|-!AB2T{Y^xu$@#a)&~V}*cZA8KFw5%x``sRC$@gF08Y+GjqL$ho5Ln5Wr{(bs z@D+<>aaMjhA_~0NwvB3e_iVH4xsPN9j>@N1SjxlFP6gdYZj?SV`(p9HqB0KF*b>cI zF1t%I`&Li=DNd22iro|Oc_*Xx6+?MK!VZ?Pzw<*SHlmp`I`__wpdA8a^4?v|!J8|tFIGh`K~PUKvh2PNugY!aiKUkS84hRkU+a@;CdAiSVO=zmhhe#j=`<5% z#ExHhc*zsmX(Sb@ltQK}{xwv{m$G_#-$#3<8Zi6d=W>)RF!^{Zc?^E78g9MpId+__ ze%6=B@Bl)gyI4`{v!|ur@~@MlugXaW2l1BmB30zLgH_4b`L9T8Umlkp7`uxO{#d6x zg62Ew(@D8|PLQhv%M6@Le$o9v`r*Y+q*4dyfb!!XT^GJC){t`r^@n`%r|H8w`S>$6KM?Kz%orOtGA{m#AsIV`;A3KGSA$U z7`cB0kL)U_UX9Ddxu3#Q0Z2Lxyk8%gLp|f&Ge2?b6tkuJA-E1%<&tjnznrR}I;#{} zvHqpcCVxJ&>1OHi^>5L8RfkefGwddUny5zl+ZR~(WxT%FRzZFBXN5{Cg{2?!svd?d z#TuWBe4d-zb11_wE1ubu{-)nr!qN}O>n3B{AM=VbFKdk(dQ|hOWhQx7*wWgIl`$77 zXglTg>u;jli6qC`wgFK{sk5H#zjqO8@)R{bO#r30k_mW>^Axru`$;x})Z=kMUPP+L zvtP{*x>=f%*R9GJ7;?$4zn$Ox6Tp#^T)MHnP~*Ch)rdLIP?Pb>$~VI3T|KU*HuO+2 zxU8gq6&h)K{8CnUK~y0mN%pUYu0*Z2L;LzX>yPDP@hwkcV{fn5|0+^{DZR^(Wa~7W zeZcu^MjdL2ST^{e@I$Dx{7`0`U* zlpXWGcX4Y@8^$mk_uj#>U=dQ`8Ib3_$56(m7_YVIZNo=PxEn(CMG2AEpJ^$Ca$F^6 z5?T;QmPwF-EzElW?@hcuUxPIlxT0bmmSyB?s#GYOl?Q-(1a5OeWhKDl6Vg6Jv(kLS z)UB3|YsSfahI%{Mz6M>)!hsLOBquJ|MxbcCcHKwU5Pt!Tc(!Rw?wjj(t&gu}${@$JfJ^ksM zmMzmr;=gYa_yyH!%8RvcY7f|X0~HDJo`ECF&)%-o+iF{|=jn-JDQ*Fq^4`Dyx@xNK z-GHU(wwrQ4XnV;nJp7`Fcn9gSB^2w3bow20|ButFM>-TMq1;{ii!GX%9a}lL{;Mx- zDSxyiy~b(wN{Zib0-o~0Xz?xFyWgs42X-q3P zlx2b}X>F8#M!596lA)J#II*UlM-g^Hur*R}=7d;2IZ4%i?&jTaw$)ywULB0&|6}PW zxoF_KjaAn|E>Cj92++i=6Y2A-CW_0#ppe_I&?G36Sy9f*bNLz-pqUrT@j|XX1gDD? z9cHN=^)mX?Rm8tOVI7Y@g?-n}DO03TqYYU2A8mSZ`lCeFwKCKb(!-YixT*CCH;sQQ zJpr?(=qZq8*(-e|QMG^)ofL=+l9=rLT9zt5U_f8f-AH~i06{gi~rfR#Yr9ng_4$!k6Ak3 zv_)A9y>T(1V;}YzOqQI1@>W+WOU!Cmvtvo* z2;%A&;OXDPf$_jf2Dc_cxN3Q9#BNlHJUIb{i%p5wn=2d+vyeat8aC-n*{~5`ux<2# zZv0x2!&kS(BlZ*4;hT@$Vl=5n{k`y4<)Vv7JIJHk;WS|-(dnxga^r6ks{feb&I-MM zaD<{QeCuzh z)#eCqDJZWLGC;KX6LI>ZmWNM!4Q6f+fEZ%wPyd$n3*4tOEsb{7I0)(;&=c!yQnx%! z4#W8A;J$Ut{K%e)Q`1!uL#T@7<$hIOZ!LkdEBK-O#l3A=G0n`62 zr{6*M=q0zoPRBcv_ophCD_y>9)R{4O(mjnh`voQEDgVSsj%-WczZjgeD&aemY5YYfhm2} zKlKxj!0nH1n@be0I1da0DS2$`0i83Qi&Epf2;p?~Su3+08@sJ=B zbhLcX)oRyi=yGTlxgUSnzu|2|2u^~?MRzJSZtc3Ik= z>4R1Z0gizQNamXrc9a-pdL=&586PIWx*`9@)aReouKT+`U9ztGtD4Trhr9yP!axOn z6d>=!>&H8rFZQ+jD4kbTxW9( zI&mDZQ;ahvJL#~MZ6&=u<^c*O98slZ#?p$(^WmG^pUc6tzkmAF?2ZcX1qPJIa!}jR z_p`5C&>2@ki8%T?;Uzl!hAMrOKffMji%-PCv)F`^t#+Lz^ye0=cI_l2!;n^)zEm$G ziC0EWx!tL41BKzUn^*%AhS(3e{1b8L1HMuHyaH=nC3E}}4arCLNTT!$8QP_CY!30|sAI8$L2 z`?pm4xcQBcWg>z`=eKvR^i)J$KWM};lTvQ&+%x3S`%Q^V&T?38kKOObpr>)<6#;Ue z?x_cP2B)@nxi|5deI$G(4Lu>Cc)n5hOTvy8`Uof%sNkMHt=-IcV5VwNC=m@dAL z4R4Lzwzg*-sHFHtsAfE0#b=20wF%%mg?#mgm=wxF%JU=M++wd$l0`Mb+up)8lh4p-k z#WJtEd+(wRlMF_*OQ7aOv&DpkYMRHfe@&*EriKBU*BiVUgbzfRjHmK96KaLSkAajj zJupzB#;~?H9-%7cBj?`77KlH1{^F&#twgpm3<;^z*0|nx1Tv{C& zr_Q%{-!z`b1&<|j80#$#58Ke_>V5qcjledqViR{x@bIX=N8*R&#rtpsgX~ z!)H6@PLFd`s=!Hn9`+g=<^Zp`uPD)SLi78NYmLvhl)seOk|J}Lm!2wo#eZCb>aW$Y z$}YSuY^R*@82YBO`vWOR87xMszl1%G$BtDNxt)J@NNLee`XCYZF+HmMpX6yg?zI@~ zQ_61^ze$>v(`CHjiU1nE`zPYH7XA0Hw+%Jl9N-QUI{loOtwPNL=58OegZ%W)X7_8h z#z&z_&hr$|Ik3aB#%nasIu{9%@QIWcyr0X`85zD_7{`|+Qo6QozXrse2$L}gzSu}8 z;-}KCda=~$Bj`beIjhGrrV`>-5JHN_9%G5$@%G2RyjOGGq!qvHv=UQ%W_}f9$nEKE zxHyz@>8@zEeIa1%lP7ZUE5KJwsiP>2h<8Y7C_de4GufSKZCzQIvdo=TR*ogFNhDdA zF#PEifsOk@kb`7!WqfdHSz;D=^intr;mr%46!toJ7p&MHDc4-5(;M-Ln&)T+izJQ$ zVim{BO@mqdP)iD&Y2$NCSXdhNoc>p!ywfD$0vlW{l#23{5PgZ;Lz-|@o7^mb{XM%e znb&W(#LI3_PL3pAQJZ6c!epO(zzV@6p5vq*nlP8~PoT==6k}}F%b8LiJL1(J2Ci(A zumU+l04XNgZ`Pn@-tT+XrF_p+;t$$Xh}kXw?PZ8j>&mZxU$;!??q}V)&}vMq+azf) zJmX|c5Xt{bWUI)T8Z7-wyGEbwebgU@xU>Tiu7{KneuHG*yOkeUC0U1qUaVd8s% zb^+;h{32KJ^W10EV-JhbM((aHxJ@KG=8~-7XOa4x(+mu*A5$3w-rD{gv)4Iy^aqA= zYMeB4JI~k?N0t$0?<`!n)D#REYUa-koDFw9aErOJ&1@~Ohu~7=ouNzHcfTYe`+^&) z0vNQhj-vKLP%O|z1(3boi=6)DNwxvBCRw0D#Wc^K(?4_Qiu>hf&B2eX zo^5EyA7JsbpWA-9DqBij7N=&tOB*=Wio3Y`Yud;x9j`8%ejx@{Pr$gez0S_FuOK^Fi(5Bvp?>PZoGPbXpCk;!z{~X)cBV&=^`awjjqdb zLqCoR{)MxdJ)$4kw3T>xLC@q6gMYZN709giK!-)NYh4EB$}gV66V7_-#sg2Z$bwDL zQhNw+!>DTh&|ff-twB7sgRveJt_u#nPn}&^&n0ve+L{zhr;ki8t;_&^r^pivu%T}>QrP9!Z0*1jL)r!GxSlSXhQlgE2%-1@N;8ql$NDh zkw=P}4{3E9t83afdg)itiZe_&G{0QqBJb5#N^0OE#|fqS!(xU{5t9IlgiGW+M8Wk+>hSgAtE39}D zqg9Hly;l}v+J)i@MnVNB#Z@rIukvkY|Aa~<%t#XRKA3f$*ZxN^&dGcr|N2kOBPc_gf1tLIHEqxSf!g{PCE&I6&QzLt@2Pjytm@I`Erge? z$H}%^jj>t$u@Gjl5?k^n$*0XnB0m1+8PdF~Qy;eEiNuOh&)E@#AGYcep&vFBFfDFF z35kU&3oB0pBQT8WUT0Qa5Gc*Sc-m+TI4y7T_)r8Aw+lmeHEv!Bk z?*)_jbNH>6RUCRbs|e0CQN;w$?(=sRxWGJ)$!E^|iAxv68~MEfUHa7bR+n*8s5)7> zef6q>S(gLt7fMy6aNP(EyZ~(GH3gsX6u{OPMfIl~q`QE2@NwIG2I-%uW6i8Wz?AZ@ z!)|S-{C=O)%K2*w5EIJ-r&s0J)&#EK~Q+#x*b$Q0U;1XCn zcKJS8+sCqkU%MQ>y};HlqJhOylr@{|pd&^2#0(1^Svm@jLf^B{)|eu<+^%I6tThBS z3Y#D2C{dC2`1#$_3)*4%)O+!{j@1_Tc=4_+OI@u7c}y2rU&z&1>l{tMXDu#b!MknE z3N@<=*(w$|*@A-gbheL$k!HRg+{Y92oZpdxWrdu@^Y5z$3H0HdcMED;q`O*4SZp4rfE{=t(uD4z z9Uc36DwDFEoJDu7t4dz;DfI^CBf z_)=0@*Q3el@!JyGsl8#yN#^i1GLaTsx$Dv|qyTp1DGY+CP%H8}l@}6AI_R&r1eTTH zH&s#xyz*l7*Z$0jD1-9Uy#XwY|FWx+92U7zBO$I4ZMMwDq-sCJdUD5aB%+ZH()m@X zN4*mdPu#vAUXu+<3P% z7=zQA<%cRwwOv@?G>)Gti(lnSl{A5;^4GV73@6E)Sei2Kn+h@LUqFNM-D1HR_8Tvr zRr+$Lv4o_=7b!Enz9O;iv);yJuF-{HETbXuZnv&9oEfO?C)h$p!okjd zL~|>r+(@4*pMm3hS??tvyjpujQO=~HN4}iObwSO8qJX2d^#(gN%aS|lXpb-YSmJ;$ zK3ioGqp(Tnz3;Os-F}*mZeEZWU~%f{sK<3Mq0aKS|H%vgt*f#vh}Pa<4)8)w3_w!& zmLfruOf=sK(1y3P-KGY|$U)!j4OTafoR+`C)v~$@l!Tvv@#Mqg+w>5)fWe;f?P#(l z^5qoh57E4wN&qLdf@zNn+E4tXeW@s zL7G0+x6T9rg-**M&kMvDvd3JbeW9(xqO>@ppYOS%QZUd!wqBH`Enm(#d;iX3;C#_{ z!1Y+{E%{);xlcYL0avs-Kb6-$ZaE!_FSppglQu~i=;PD@p*h+FtGLs*ll%4rFk*U`x|^kh=v=(8~l z&Y6_l_?*uE%S$M*_8*}~x%6!NxmJIzaoDUc0q4gX6;%n-GPz`M{@!uMWtfz`Jplpl z#*rjUhV<(zPru)CknJSc%!!oPTY?JB3JNF2Vy$SVr^r(ZI2k0@wt@g&BDI&Vah(Nz zjhUKb;0K_))hc4(*I80127ZHIVGR5*m}^98G4MnA*0TQ?_+h%rmRJn@#-v6;2>gbV zseA-}_}x-em!!27c%@TJRbIKNk6nfnPrJgm1v8fnP3OeTso!E=~*?1HW8cM*Kj1K)d;19dniG6|1b)q%Y%%ad2kb3J#lSCPJngOMhrkaYAY0cV z@XN)AwqoG7-#P_28u;zKVl%rj@XL^3dDlw_{I;!l<5QhtMse`@JAYy`Oiv8_&K`S% zrV#jL&<(#xr4aZ5aARjr2>dc;s@~u=27b+HmOcW%wx|gk0zcrJ-sCX`e!Weqwdonz zy%X>e_;pG?V&HekAYNA%13wxn_ze8|AnxZF`1Qs?SP1-jrh)nx__f9HWC;AwYcdY3 z5cuWh(6Eod4;^zVM{D4hkMhimj0k}rKzCl?4T0ZTa`q@8@cX$|f30!Y4B`<2zq4^n zv_1rWNBG;K!Vvi7y%8M<8v?&v7IAQdz%NsA@gwj9T*b%PL*RG#Ff0LxfnRH+dKm-1 zZ*iRqM0Zo=SePGtPT4=AZ76X&8UfxD{9&WN`PU!UbJg0;FG&N@(k?DCY9I<8a32;8 zfoM5x;I~v50@2bhNoOPwEj<%6Y6wJ2uQaO@0?`7!EX&F@5G|bok`RcV-)FfAX-p>H?)TaqDaauPz!-*$;(^fArOVK zwFTiJ5Iw@AR`Jw8^a%XE4XF@_mNLA$90JiZp6(44Rp16};SDT8Ad2JG*MtV5P5(ZeNR)$_1k8UZsyAiCG5SB*j-dPp~3L{$hx)uw^yneu-3 zQ3ym!BlJ@UM9&HII-?MX9-@=Cs}KUwTW|YG=t3Y`_7=9vMhHX;0>c*s8v;>m2tz-G zK$Nv#V<37&onQD!2t*NyT9rQpqKB8}MHPiW6cq+*QiebjC05%j!AWm_Fuyr)=%2ey z1JR?p`HUCEK=g=izR;i$h~gl$vnK?i1+=SgB|ikBr8*H^3`7ej1R)TGG?Z2OLm+y{ z1gvtYfhgoKtjZq((L>nbm03MsS|?W)0@0i4;~mTmfhbgEJW>dOXd&tEk3bZ%ZB%3& z!Pu$t6arBwHd38T1JV6CNHQPtie-5G`d8 zby5gK57`ODnyNSbEv_>~#*0bjv$J*|MaHX1bS!M}^5}ACY3m-sMk9P zs|v)Z0^4Qink&e-rsYMILuTtbA~pHt|5ab+cs?yb9GhBs;L`Fb;lHP zR@79fNL6Hc)iVzEB*N91hVS<_ZSee{by>Oe@)T%QK^5amc~Pb2Cd$NXcw8G}yVDqW z&TJY{Dt&S?nnwg3@e^H@2F&R7B2w8c5O$_ZZPqR*9w zhRA0|`vo<_8}r?+K}2c6kAHR3uAANo*c|;h^V@y+aZIlmeM$7=#NqYn$NQqkiGF-! z+DOrl4@mWuD?|))*KM?%*es-_51V3IO|M)hggCDP` z?U+ASKVAWBHN=|w@mi@V9sGE$zV4zQ-{0N8QSjpxAk_Eyq94b1aWtFy@dHqOrk|o8 zKjSLz=uGhA)ZqB=HX-V4wF20z|2Nw-BmjwiIK zf#}EaYJ5^5_;IjyI z`91jY$|{`EkDtBagV*ZE&!+OZ9r5EoH{-8OoF_qv)Q|52#VJIiAKxbtY3l|*zF!V8 zBnLlUPlNXj4}u>T@}B6&Yb`Y75&U?qgRw;F$M;?)I*uD;ayy52GMt?Z#_wQ&BLj8Ed zbG@kT;Kz^LssT0Bk2lOKaTj=Cb)wi zk2XF6ma`N8iOu~$^y4H|`r*fsAicHa=*NMWeB;dM$JgND81dr`=<;`62S47x5B=6D zf*)@{m%qKh;K$oFHIHYB(nKSo!H+kLcvw9}{di0AeB#IVy0(&V^y7PpIM62e@s_*~ z6#e+N*@$2Kel7W=d-UTCH8xYT2!8zBsA=N`KYpIjB7oq>8~)uWVuK&w@05WW>c<;F z{XhKp;X^Qz*WkzZ=chT);K$p=y28k^y65mcC<%7zIZS-`tg-Xw;=j)Y^t|_ z8U6UL&G>5*<6tmkNbuvcQpY0taSRnZ%SrI#b5cb<`f=z$+WLupd{w8?`|#sS#&*?@ zw<{4uDERRPguDAw_2XaN^nW96f%7S>E1rDz<)6$g@UQ;w|Mvg!FaG8K#i<4U$(Qbf z3W9&nrT@+U>Hqm3|M4$>{mZ}mPk;Ge{>}gSpGDaGQSqBiQf(c%Bf!4#Q4@ z5xr#dB}oXA+4d(tToSu|HS)baqB|bZL|e*)F*>9XB*sX_j~{+{IY!xyK?@)LTQ*#J zD7zE$m*=6RzL@9tCRS~tQIQ#kl`kG)Zsjlt7_&_iEu_PIPDMqb&OQxyqhi0ZO5>n{ z@y?d5Dn!*NxcR(O6G6{XCP7pKD|G3E+L=m34S~$JtA6rGSC%W~BC?96@+Y|ydBjyj zMItAP`g)N5>4vU2W2~e-g}G8f?T83jxxA0IAhSSB{CN=)p$hV0+g!oz@V>BO)%0o8 zeV@X1ny1VD?dM}u5`^EpNQ(*=E4@N|;3fa)X^7P3aD>4EOqm5A5Ax!L3U^g48?HdL z5XG`y7udAk3dVX%L zIci{`u)snT7a=WnY9mq;`0j@GNh0Z4lCz7R-?5BBsx*gLc#OPZ3dl1nk-Nr$;N&d; z?fHoLwl%+AuS%{Cj)1oth6*eblA{>#?rETXSZ4!pfcKqE6$UQZ#jV#WOuvWg`MhYL zy#^$c$VQr~@}Q?rbrKcX$cfn%iY&u@kTTJivnkw0rzt=*$T))i5f|MM;z&Lbt`<5% zq|R6ZxtOY%E>71`5@0Rey`JcoO$dN9CJ!yhOiJ{AmcN6khidXoo}xpWS`Lj&ynyv$ zZJ3`M_16Z6?M+{1*o=UAy{+k0IOT&TA&Gn9Mu}zn3=|p7-X+|0s8^8l0xcWS`<};e zLXfGdwX+eB6|R+kxg?Bis!oZqa8vNggX3B(0*-%H5v{1J5h>syl_8SyZ-IeD4#du| zO0^&Vanrmz!k=t^jW&cwqL@X0^OsHj=F2pmCpA+f3}o9wnnLHuVhZ@5#t_Zb);Oj3 zWek7z)G7^I^}`tBxo=PTzJ-Rr^&Z0EEu3ujZN108yBu14kl(D9FfJPf z1rWj3DYyW0E|X-V?PsvcU;~8Z4RoSyE+>UQG`^%>Q73D|0=*U$)w)|%|gMv{1| zspMB1JYKQR$N2x0Jv#QHTrG~*iKsgr$B9k0$Id0pxtc+z&<5xYsjRm z*xKdPfFQUr15Fj3zJK?GbO5E2G|+v$cMAB*lByvorFdvDe-oaN#Do#mki_YEHKrDm zlY~62keK?Z#W(_be~e6;Z3qrY9Sr-}2cQmtl*dD7dHbJLht~SV7{?VBTxFWpDcW@H zBpf!1-x)%?mvJWeO!j?Z>)(K|Ig46C8g^m*m}0_*xQ>YUpad@Db(9ZcyfR(vhyqpiqelGw>vYg_Og+z{SOK+$fEDG!Y7G zg^CR4q;*L|$O(D!KDaf37jEM#r~N=l9D)mn7-k7jTWbVq$f6;5PI`kMs^V?y&Y5-y za!IGI9cA$MdP6kM+h`115P4Lwk>~vD53l-q-Oj`#7}#UIgjc;JjBaKDD`1i?RT zOOj^&o8N7BGlX1S&(aL}Zv6PG)rTj3+w>{)Z~m~+Tl?#eH)?O37~vQ7ZO$8q4BYFp zQF=TvWeU_2$X#{e(GMT^B$mrd>e>0 zi#Xz_GOZwi{ve&MJJ5GAvyqph2WpjMWt@ZJO&&UT$+wMH&BX)C+uKZXH&qnW_mg^4 ztUDU=wl$inoZ>P^@_6*)+a`@wby0wv*wISgjSH+~biD2Vj7T-osy%g;1{mny4iKo6Nl6?ph=LFadd8vbemXLTF5DI020({KSXAY# z9BmQfooX`jIr8ysznw952u**mST$l>)cDxXl~_6HyYV0ZcqyXh`qpiikRxv!&yxi` z`LP_QjP%BG02t?$C~LX|akPyrtpYj#dhHX!dp5IiX=h`i7HVPt)fvpQjg92;f@J)J z`*om$Miet&1dK-~hlY-6WEl(V{)nS^?fp!3~!roz931s=a7#_=LhhkZ#8Z3*!bbun2z3RM&~uZvZlE|DeK#zEywq21rd*F~SBN`k)< zVSne8PWnp3gbcwnIyaA|<2#cHBmyN=+eY};q@QZIuI{JJvAK(88*ba8V#;D(f;Mq( zzka@jtudMOu1Gn0PLDxOnV!$o~y4j+=&f+vI}P57_~4q`&2!&rp1+%tjj`BLmU-~HW3A2zRI zpVo$}K4C5S%>G=Ag~#{vJx!p7XYG2fK&V<@^Us_dzBAPb=5pY|LMxjxv%SZ>fVf`_ zuj>iOtGj|JM>Du_-q>puDUeSgMO{O`En(9`%jeg-{`rm0cQ^7#eZKB_#hO}FKkMu* z0j|Q_99W-@-r9eZ3#)VRJj&@vP#`cfw_dBH5ED`yM3{0hm~6r`x&~f|627^m*Ke&% z1TP_2V%tZCy-Hyf!SBZCNxxmu?r5;oLiD6U#~VHAWG%|*Nzp8N3$W3X&Tfst4^Ijd z&`YHmJ?RwcNA;wOw9ld^1(S{iA?htp#{N!{e%Oldkl;y==P_KJdeS3vYYYbJNl&fD z1jW>o9vwfUh*eLz_+$*8bl*2IfvG1wg<<<$@T8;D)JO27V^K{mc+#0%yCQm0R7l@w zAbL_n3MSANJSmFQHVqRz=_DTb=t&_yW`%Y2qzig~rd^?)^hn&ibi=`uuFlzzdeT#I zd4ucVNpDQ!doSuqkN335L_O(YuCvK8^`r;DV9}0x(#5o_!ISQ-?%O_i(!<(k(n7%_ zq5<)?&7uw8{oO|&wu>;6!IKW6P>r4xp61=t!ISQ_>$uk7Nza=1$v^R=%#av8>0Ylc zy%Rj?!Oj}flX}txR=KxY7d+`g3(w$y>Pb%}(WsBrlm2|yzrNA=?oXl?Jn0R1dG=WF zq-UMIk!o{9sob=!Cs%2AfY-5yRVUBanH!7(~Bqg=jwqkA`lW11drsv7gtvDP9j^Clyu?UY`P*L^h!5^!j}K|;TD zEnS@)Y_ts@c|J6lb}($4k3imoBmC@(G~5a|ul5y^Hv{+GQX8fpF>s?%6`Ij)3)E1& zu5?9cz~` zp%+)#f=$E;aW;8X5413j&)n~2@!u@6Hxr3b^~FOM{UGAsb=D_4ynaS9Z9qaA==XPj z%i6v134E^?Ya-^MfAi})`?WrwHU9)i&@lAAM8|3FbSRVYGuUI^>K>Ut@|m4Q9T_Di+LOippw}o;96Vrjul{ zW?S2qycR<`wYM#k1huplx2>|^2qO~q|K!tw``xRf05Zg~!o)3!enCFkvfgmuBh$3W zy>!VzItVreK5FlS^?i2H?+QD~ZDUFA)+Fdaz1l=*#+1NfR)b9M7r-p2uo3r1W}H8+ zM~I6$5T%zrj)#33rsQkua>r0HQ4yVzCE#+}1_$(e}(OvBkOjak;^3E67g zcHK4~+*&ilEMPLULfGiC)n@kg&yo>xY#EP@S7n6ae*8(T>aKotkiz9hIkGK)!MxD(2HM>cU?azccv4 z(AcBXfa!E$*5^Jc7O0Hf#q;@q_bd$j$JQp@=WB^=QsR##$v%BDoqXeoifvoocEI1~ zZMc%hYoz6T+lsk{Ltn$|1-{zcOIqU77d=B0O8jkOU|yNB&i1M@Ds~KNdl3SAg(!bR z>@mG{ezcwCh)vurZn7rMwtlBO@P-J9U~REZ-$ArZgQZfZ-^Rg+2&vQWm35J(r_|}UjXbQ@>9>t^ zY_(3mZIn7_oqpQ})!Ws}B$NP*C0lCoJI-+e+YcKCRUCIJWto&5ojU+bb-x(%sCft9rL7@M`xT@A@(` z4t_Lu+p@~N@uDtLq9dhw`n?s20OXRV-!ktxie6C46dGxsz8@-as|!e;zGM6M+IOj9BY?4=^o?}A8*<-RaPmjGNN^!uC*o`lJH`Yo$|MKw>~(Y|Ho zO!M>|T}_55);xU&rrkVo&C}n%vx@1ZcN2Wj#@G>L*mtX3N7?W-(>y)S5^*<6o*rk= z@3iLWadv5frsV1GGjA1I$CK#p8h^(j|Z=LdYn%mnx%PqoNMa9(LDWqAzlxR zd3xNWM&)qH(_@<&r{Z;OKA9!6TZq4nV^k{MTXxytvzSvBS<^gxf)C;Rqmma-lNJwo zWAbAY{4gJjsLJbvs1JZYD4Ijv^Y|s1iA8#X|NG=GYGt(DmJziRhVHPE#YjBsLA#^~ z0YHRz|5oN6+p zoaYRh0?tMB+PAa&?aUw9!~3lH`_y<`v`ikr{iAMpAr0IzqHBYZq?~f1e&iDi^WQ|g zYi-v+uR8YpUKkt00;E5iitgRrcaMN0#i6$By4-0;HWq;Pd`eiRd2#E0TXJfqyHj^= zM%3@9lqX5*2rcilKItHiQb-m7PGUs93V(ud>Y3<%LO*BEm;?7{25qq0zpH*b(3nRz zE+-nfMMQi@mU)=EGy-l}@rqe5jFpDWfo|G(2pPE&(y+K?ncxo6=y=qXc1Y6s$Z2xV zzVudN)tF91i%Ps~v7b}c`(2nFIT?FMw@`BP(tWyxiwNGkE*(732g#)Eu3JVCi?+$) zcTU{g1%AI}mp5j&B2jG46vduogy)cR_SXJ|hImRwZ;J+^1vub)siF|HvjJ z)a;#&Kc2+aGY^)9fBaAX__Ohs_<#0s-FhgQ;Q8-=!?e&`sVQSe2i?x{+sw{0ooip* zIJ5IV{_UUspTGX!|Hr?5Txjm6u=vtlzxC|@^4Gur@s}_r^vkNq&`?l;`^29!lInH9 ze?VBW4}Cg>EABOHVe`TN1xQj?^jkPQ|6GpXq1g--mq zg`Ma1Z6OT+D^rpZ`A|(fN%%5koJ>AkAuqs0I@~(mfCixz40g!5IK2y@nfEQsjA6ht zt+gzb*4aVAr&zB6rm-^$1%}OyXsMFQ+-vI-+0W#CN|bD2_s+jkWztHnr%?Q?ZIxnD zK13wX6xc#E@VBtKxdV?9#UlIqbPLjdA*@0ay#J^pCfQg)?TOZOJ3V1!;$l0R(ZNo zOD{|Xdf%0Y39Eo})`yMUzkC`e%V4Z;hJn~@j?!qe;0nx znlC3V*XDUZxe`C#glC446>#z)pL%8ue;1C%>4GiHmUqI2bFCsDYM2KoSf&8mwvhN# z%FG;*ZJ`&W(;+4E&Q|cj+quFoxn(@>i|2zL3$-xZLJxAc@X~WM+|hwTj?eVz9D5Ni zQI1ryzE{Yzg7sxqnzz3oCb(G%OPsV;) z)?o{ink*4UwfgCR*$G@-tf4t_=L7-`N+B&@Vt@jzZ#%Kz9YVkmEMfuKLYn=0 z?5Ni#AtW7GWoqyiI(N(4&NMia&m^yR;bkzu!XU z0)Rb{hVpFTMV+x3|jQxmY1LVY1F=psJaVHbvE_uwPw#u>(tg4gD!?aeWWPBk;hZ5>h~hIO``AoQ*J$uo!Xax$kaEX*;0L+!Ip%BZ^8tJ7V9MIr-G zF$2p3#;*Q6x+*OM8$Ew_+bcT1C2l-!CZ1>T>Di4$gEqp&)yF#as(pSQ3%cObZuIGAeHC#~R@ z;^$(Pt(&a)Ofb68;)fTS1|xX)iO?Ekk#iIlYUwRN%aHzS;A1uaWaO~6gF^ZEXFr_; zJ1W4@Jw!-ldOH2bn=r(NtuNAnUxib$^q-&k^OuU}SAQKgK%e_f7+31kGwr2@=8g2F zL>QktiJ$SiaCEup?aZfqZ1|Xrd&y|Cw>r{MJ!Het5bw54i)Gu7OJqup)}%j6sKh(e zIbIESKM1L0D27dbCL^!G-qt$|vp%;UWx3H22iG`*#YQKo-`&cM1 zXlDT9N#|EC;BDbB2+VD4DT4^ytp~}yNv=wT;T&}o*UZ>{6>hc0CKEj#9-?#^aC|SH zg?|83bDRdJ!sGoaF74SBOKxM>4;j9;h}E{73FB55&gfQtR_r$L-Y|tTM3E1St9OCm z^i_A*Xej*a+;SGW=nGAs(}rD<6~YW9${-F6t!MKg`p28|vT6{s z`sEA$IKt-5w8zLhT|!2F-PQV7;zf1@uzozdM6)UkN~70CDX_0XgkwIO6T(C}>?w)- zUcE7F3yTCBy%y(s*}KOTv@Og&rLP>yJWpM8%#pSWoI4lb_jeM%OvzI5$J$b`kuy(? z+rmPL77SabY~Fqo%6X!?N%3LNTs*)pDQ@c7Yt<0)=!hCC39aUgygwWsp|E%bPdrBOfC?ro_@fJa7ks9Qau5S zG6TilJr@daFj=2ZLT2ASPlkVP;UL44CwClS%c^H5K-$DxR;clO|5CMe@yscNgNo2N zL*4zrEX=AJ?z)z{w0a$)RRXoLMO;OwQn1-nP^{Pc0kd!cRX9op?CX#@^TQ|( zTn8s8FLf|b3x}H12#HCJGceMgZEua+VIv2?^B1z)lj^du#(7G6{kGoPSPo)XpeOKt*0@p8_eNkiyolX(KZLVIls9Pvi z)egk4Il)z<_H!M)a5}}MJet}LSks*DKGbv)&}>1WZb$vjOynsPc>4eT<&(Qcy2NL= z-p_RR?&6;9E$p-_$cRw>rW0kpn&EzYT)Cgk2iX?P0TZF%2#R{-X;S2| zKc8TTcw0-^AfREq9gL0?WW+J-K&6{^JOyb94MvIW>8#+d{iN>1`|GaMYd8wMrA%FkVMJ(}Trra$olrSvP z&zjE&b;D1Tu#Dv*|EMM@77yTIT<1&s;ucOvs-3zI1veveWO;BR20{0j`BfM{MgHtpA+YgeEza0`yXAEFGayROp4g@F)L+=F)YA=rd!y_!x{p$-@<9>qC4v(zg(1H9|{K3kjzjYrOTzNyIzmEbs%5j$@M(I8-41|77nVz9KLNj3DdI&H!Q>ZQMNEkFgNA&p<3le zehS9vtgTgc0}5gQjO6L@sn>z#3E-IwO2-+Z0|xuzlbp7&kPljm9+QIwdNNKS0vhO} zGArCJ2Bm|Rm+G^v>iujSoC8coA@=#@t0n3#wdi#yRJ;wsS;@_O7gGA7PrStwcdB!8c7F_;-jQS8pDULzlACvZQ0jWg!ljX_u2*0 z^g)Mjko}ZS>EaEt|BrwE=fC{;r@#O8&;RppbPP;D@*chWTaW+u|MD+?`SHL1@&EqY zAHG+eP?Ep(@c;Fne#CAC?ds6}1W>y_g#w^EAJ6c|4gGbPC=jIr0zyC3g9HU6oFny` zd>%x~Me7gsv=6-!9k~Sfcp|V3zKu@qJ$|p zZ%*js9$@mxN0TCPp-^LtW_uD>8Hp6Ze8Lby4PrK?dHmNU8U2cymJ3tpRAGeB zl_Xz%+E}bwf&#Fdgp0aku1nx8wK@+8-d4e-)u$J2VHbdMrO`iISeSBb3mx0Og_lBM zFN-f~@n>-#xUY9OH@p3lKkRmdRgQOu;z+CR6saMv1u7TbLvSsrllyUE!Ab z$e1l03VTcL+TpH<7qf4+Pe;tKsEn8f+UrRy!@m$6pN6|~8IB2qF4LkF8a@;4bywV} z&qJXe6?IWljKJYheXy3yN=gXip?}=t&)_j;^#=X>K&0L@SoMl3{v4C@;lz6mAveX? z)I&A=YA(u6xRY_HyPqKpiemNF20gPnm+CE~Fcx1eZ+m|E0*U0JIr55`4Npxn7a4qZ zH%r)EDVO4&8}Yv9EM2@@lv6+qj@QLJ84pSY@pFGhba#p zN`eLr&y{3M{HE+fr3nG)G`aKHU4&FTr-9ot51RN@^T?QO!<|QydQIL=!*l|v`!q-s z75hXu4L)25xN^Eoa9g<<4-GgEo+uyHO-Sv&*gL)?gSCy413mX&)$R>s&FqD0QZtER zEvCw$n0z|R>z9vF2f~)pA?KN>O&l zh9gOT%f1ecmQRDIb`kCwl~M5(fV?+F)z*~0H%xmnBhZWb)r;>ZDC}8Lfdud=lxE}% z*!p5f))Rl`5qv*%Iz2gr{hflntKb2oMHt%YM~r`Zyj4CHHkVr@6ij$E480$Dnw%!EvuX^RSIShq?rvfT+N9 zLJ93bpNx*-oe?XUqn3S^1Kz?DZ++4ty2j&-#3?Ev&SBUCl>BM*jifOc^OH%of?MDnB5-2G`#=(Te+%+GVo+7CM~g;HKqh%87>;&QN?2#$EYz1?`T`)!4|In)`7B`8m>>m;C89 zczs(}^!w!%%#3~$@~940|4EvkJ*5mmznb_cnTrG1B)5iWS7b2sMWx2$7crvka?=U@ zt)~HI%v`*8p}AkjPnT`Oz%&bNFb#s6Zm=kxHO%T;bKmdDadJb`BxLQe666=P=>yf? ztVBB_dtaT=84y@TzXNe^fofh%k$^Kt{z6IOm4jZ3vZGbn@7waxAV?8s?b@KmtxUr- zUX2-afoay$EzFK{Ip0aBW$@8?;sJOMR>-T-0n3VEY9}T2EPPUzV6QFtC?SRbBe?4# z{F3VD?cmfb^Q;N&2JQV+f=&#L@&E#34AFY0%`TS|DO+dn1~CMMxUF-1cKY(^ zZ84?6Qp5n260D@*)>%MK9B8lWz{!pvM9%ZU%WI2(FpqE9aIC^@1SnnG zQ0}xiv{$K^v=dl8Z`&`)5PV;tmMgifhPQOMgJ7tPhZ`g0pVkx|fG00Xofzep{tpeRd;+ zitVnIv$6^w?A80`@wN&v2G-l+B{<&vOcV^Ppa<*@x9$P+V!;$H6Zb(hAAO1CQxJBe zcER&PWPLlbw4MYIvLNUXKAuZ~!Z`Jo9E{61F1p>rc>`~ubHUw-2kyN90>GS?!*)eI zCZ|RG(bggH(C0M;~}fS8qw13`^(0IBZ#Adp1HBPN5;TG0W89En6J| zU?Se^-06NEFT<0rr|-;d=v0-89JYtIm%6bcjJxv5=r{s>QsfMU{BjNt!ZiED@&oD< z$aZdYnSjp{5VX&kfaa9ocx1P$_%Frym8*Km>I}N@$ZjAqcwk?+16=mpLh_J_K=xgT zp-l`EFNyr3qGiufcoDKrX&5}E@I(TP2`eG48{2a5v<*`5Sk2-0z9Z}9!7h2Z463T0L8(5n#&o_ z(wS7ueVXX^F#VUiw(}w(Y1$g033uWwn$VTeK*{Q6IUn;GbSqv4ArXEeT(m+(XX=d0 zSzr-ON|ZGKjW9<7I2ZED2h#oz-Y(}U8f9FKqvoM^<(iy*(O`T>4TG%j5VvQfPPmu6 z^k%0;F34dybzL-a@^++yMk3(GKsv~Rnxd(L0sMfW9Y9`84%0xT(?aUnWqfN8E~#t| zjC;0fUmXesO$7TtAScR>p0%~;13H0xzr8ET0c2I1$p=6(lzoBCut@WUgUfd`w+qU}R0RjyATPOg6S{+qRtzH@0ot*w{8V*2cDN-g&=Y_s{fH zpTbjprstgQs_wq*l=r=$1o1c%WTN!p${E#@%D?sWQ3_Hgr0b$HVG*A-Tqf2uDDS`W z$;W~fT9il|^)AfC3EX|GBI2mYd=PG0XI;5#DF{4cKt+_2b~KbOW!5yPNfJM zeLid=;Di+<53&R3MO2Li1sJWXV+*+^*Kd$S$A5croxNZQ%V`7)yvwykPOh#^Nc<+V zle>WuA0;BND`%J z8UzW*$H`R;`*bh=Tx1wOCfriY6Qvo@L?f8=ds74Mz8z;j^YJPZQk((1-!tyq3%gJD z^)Pu{LQb}_4Wf`ljc4y)mO+8>3BF@xKJ5nCw=m?*tuhUI!^&bZ0j#@b;u-`JD$nfw z(C(Qx#CbRnC^xJ|JJq~cB!M1k((OO`7P{#54Sw(<IaiJv7LeG8MZ9G>93Q=+6SC^t<4Ay*b4ymCXbv7U;33%p4>xs;?p`42&1 zaLE+Qz@TJIq3j`#Ifx3NgBs>}vMNemP*BzJV7ZXeW~rF4{${#vPO#jkfrWO2x%*XSo?D<} z9uJbNO=uunWv%pJxpkbr<-pd>)0u|>y?K~BNmmmVs3NNmtWX8a>#0`d7|t|H9#kT8 zL?Nz<{%rUMi42=So!6|=Dn0ImYi`E*v(N>s(jR=Z_wg+8Z&o_uEvth$Hf|uD9DEgv z!fU4T-yGgi3YFuTPgz`c*R52Nga|2hNNG{b7~VszRar=jz5N>A^_EDBpsg0W{?EpJ z)UO9&*Ciz~wFZ)V(=>jAEci`mHhsUzIz0p;DmZ^M*-97dQs z*_?9cPWtlR%@CaDdm`*1ZysIy;ky4gEQ`E_n zMmqal0Aa0<0X&29{A^Jzm1!V^8S*^ZuFis<9A!f|Gy#jiq7HH}mdQCz_k@k}U9V%& zbh)jZ?yRY478daH0HG?){isr*ClppiGslQR&HcU3oBteSlL4QD4%Co@M{xh|3=@-4 zr|JCLKpmTmfj??C{!mCNOQjkKBH6zV|GnGy!k6k0mzvk*?lJFWHMEo~(1ZLxQ@iRe zv;iGI;35neHsOA3W73bzBROVcn%{UydBKpl1eEyCw(OnLqpNghcK(4SGbka@hf@?$ z!G&VKf|+Bpgl820ykRtGQ-KiFo(FFo$=4^*#b<7)Y!pA$`r}Xur`z;bbpPKE6f)9l z9myp2`0yl~?M72Eh>$wmR^uOTt_5-P{RmQ*S~RMp{kAx-W`)Tx)Q8E30?B8&FFAXm zw3G52m44$B4>=aayG2_ai4)ld+^NzOY4jbMP?lr#{R4|cEOmBLLXLhEr@^HQY;j92 z@m6RXQ)eH-bd@~>qEjhZfsdGT5g^+ z4BVe}x#L)x9Y=S%fq~re* zXAt3LEJ_2kx1E^zSNwe+1DXjZc$k_HG#_y6*fZ;Uwg5?V$MMpjA6NgA7VufDr^H|a zS9b8NsbkOQ>F5Q#rZYw%1jJ1n{HV?VUKZz>^ACu|sZhQPUN(ssqfCDUll)8mmig&U z?rCReqHpbuxNpbIuas!4{6<9thIPn?}<$11lQ=BH-IG$7?4-${ho1^+Sc z?ASli$KvBIb;FFQB-rJF!EfocdE|t2;X7)h;M4K#AZg4}!r2@r*J`e}sZ!@6ar{ z5~We=_9T_W9_D%&WYIm%4Ty&^xE824IL@<%Is#d8<}1v>NCkK zrn+>VxIL_jKv$e)`8=mP%7kj<=9cgk4r$ zpqGQXdPnCIOFNl8}p6R+qmD8g>%fruiMht@V9JAm)9a-E%Zt1hyIeom7|LF@}xHSc#F9L*1@ z0f?jC0+&~T1NrjAmsbN!w??`Jo#$9^-@hlMpM+|G-}yzhq7u~p&1OVy>T$O6LXbeP zayno}+qhw=m!r_qerQ?#svVSe!)l2hcsZ%@YcMmvAlHGW+lSbN_C*ml)BJtksrcWW zQPS21wtxc$u0F-4o|zXQa3E16l^&-75FSQ{pN+k!CcR@`yhsHu-cqM{CJ1D$Q|T)Q z-juO+lK*a@m{Fdq8;0uZhr6|#M!->_OSOv|2JdKN(b}fkPK;7A*{0r)4FMP4lFmy1 zuN3p)kV9~X>7P8OK+ypo(f=AFn-SoWwdRii!-#`Fx0#>5MKm?NqYE?h2cr}02ZH>_aRVujAmK;Qtz7&w3ddepYM;Y_=! zhpcQ6?CNG`wAbezYN4N8qqy<7B$D(m%f-zO;C0|QLEmBlyxY}MXL0~G9Zt)u3RgEF zoQ2QDtD3;k1O%Yb6L)C=D>n_~P`y`67sAS9$Ynz#34_wxQ4~zvE>7G=9$O=e-JOwA zI^Fs22|nWW1$y*f;ust}W#+7`Qs*StKOxy);s4Uns*-?X{lMvjP)#%`|MQY<<(LM~ z%)b@T7A}-NZTRbQn5S)2q3fx6-gy}H~1OYiwP52oa=h6F?HxKn{ zLfh0(Mmgz+Ah?{H@=t#kI<`MjEj$IyLr&R|V?(JZbs$Si0ZcmSWP5WK1NC)*?=WE> z(xiK79bR)|T(W(Dkit4e{@Y+=@h}V^jwpwRVAk|9H&c^%}7`Yd8 z=$h889XoWiyy)C4YZx@7MqTv0<4&w$W)YEtqP|3o6-M5fRpmD_u+~rJj)!(q!=wT6 zf2-yJ=&YKUh}aTmdbNDx;)rVF@MWt5;#~Fng$TSg*U#H$LGDJ=(_5<#n0{jd5f6xV9 z*G<#cef9s`5ZB3^5Kd&2S|2~3?J448QwZUZsX39a>6q`~T9fUZXFB#mnw-FemUzi* zvmL&f)ayZ!kQXWLPHwl#L_e@{*}RWf;F6cspZx9e!xmA#n(mj#(Wof69F|e_p^-ub zwSe#9kR8MBXz($x{*IgBeWc4eKn;%Z^WfI5hKRr_R0IVkyVNtC`~xVbHR^5(msPF} zL?tX7?$G8fe)EfDTQN{5Jei81N^|g=w%#20Lbrc5<1_61mCZIt?0mf4;D_qOk91Ty z^;{RlW$A-uCqne-}9D+77-&P2;Y}Acj>bVYi-iEs2bQ-DeP} zj;8}yj`01X5J7cyaYvz)2qU#M+U;nBmjc0~voJE19Kd8glL1!lCO;_>Cf0>)^i+$W zjsuA5&TB1wo?Xcs#otPNE`WNn(-a ze*o^#rGd4P@NNqL7#+?E4&g9T!LbqyEB5V~1Nvn*Ky^H#)QT`U7|@DNoBK%!ycA_v zMy|scYI>TMsd2$Z3NuDA?X&~eB23(Ri3n;-of9npSU4c#tA~;L_a&leGLwSB2E7Ql z0F9w;ieo2&0Afg%05D3FBB=TOVW^*0CRXl;Dwg|A1=}rwLd`lW{yuh zplv|Pse`E`SWEOA0W&GUwgo5=k_!$Ls0BBdlEO*!FOniQ0~!#Kd#?~dbs(V3M*7>~ zlb{L2yRTrQ~?ROme{I(#QWDqlQmG9*Fh1#$AvM$nguu`6sY=<20ZL7JVmc z=kdXx6QqN|CCS}L*b1L102ofgd65eHD1}?XwETYaecFl#yFmM7eM-_Z{tn(a1y$!7 zqD^TG$eAwl(xW%}#Xt?dbmesiI(IceQcJ=-^e*b~6@tC8AGL#%#;XyEH-DN@`&g@# z#TX9-F@Q`$;bDOqcDz&+=v{v%p`d@%e)g)!37~g9l@#7tP`dw{ZskGmvOX5i14>$k zJfcu)-~93UTZcg9t_I@7-=u8|XzULT)G*^-)V%pajKxYTP3f){t^T;tjM;UTtPV%# z{_k(JaKTQ=z)5uMsjc63NWqTUXt9$GPP5`U#&f8s$+4ToLABb*k6&h%b?~;3orWQ!07t^74sbag8IG%l1G6LnP zeE7f2Dcv`Vz2eePVD)t>RA!VZ-3e+KCHTq_svWv@yRG^w)hnz*=x8>6pu_4nGy3ua zn`pyL201iPBV@+rnFUBb^7UeLQHy_QsbazEQ~z(~i&x!>M>Cs2dD3WtmzT^C5lz@N)ja%Kepmp%vyk@|xT)On?4xImuo9~^=nKL4^TQy4<^WNIjE-N0wu zxP+i_XL<`zL6&SiQu<&hYf&7W@+9CYP-g(Brs6NOScJRw-pD`XyvtA1EBayl7G00K z1Y<-U%!7R3XDWI4F^bX$J1~hDhw;^e7e%4S zfs{MFQy>1G)mADFV;Dw2GS@q3UrTH3v?6*cDL@lh|A7kVWW$g&5R0UQ$E_65#UR7( z0u`pP=iiLM@y3XFM|GU~!r&F5x;0SPkzBlK%f=u7HB%f zQ7xBE$8Nb(wZNDI{ zPDlFP*4z(+ueWCb60gTJwg}y&U_aZ_2GNNrGoN;u#rPF--)d3xy!8N8V^hN%La&~g zBo_&F*%wdslzrePV(*T1b4bj6M*lK@<@x(sFC z!-1DDgU%I}`IdB|yavnYN6FgdOmzjE1Cs?I(A_gJCZU3?qWmq*Mw%Eb{l^o z$m5xxGRwmVA+V)Vqypw}jgvm*>uxO{_&P&a!(~b2Y)xWH$FfsfO|2n%=BcU=n0yj1 z?wqo9&~@iY9`>s`WCj%dbffB^($UchUaV*J=#v01x#tF4@~JsWe^{|kQRvY@53+iF z;pcX|@zu#NUnL!D8Wk=H24ib}Ra4d@hu(~19X#bftXt)VX0 z!7wanVmH-PN>Xx*1dFrh1FD0oDpkniqMw-+?GGP`wZw%%We#(Ul`7M8O47|DmGT#t zoVN<;i>|6Qey%TcHflOXHh{bF&;&_YaoCy7SgG#f?K<_d$_@F7hD;4(YHFB^`|j@DakosQM~IE$y@3w%dTkpT-89P;%(rasf+ z^wLMl5xPYMsURfH1gR4?;QV+2PQo+G+~N#mjjmDg^ipM1CrJ|1^i+!&rCs;uJR;lP zucH)sR=Q*4p}%FbAKz%h^HncC8eLx-{#QGPGDE!U=pvBkhNY%(o%2GNU~kuqvN&39 z=~om0>$<&NN|(GpnR{r0txLKA6|Z+r_B@N*txRmV#}p)1luwQAV46olfz8Ru*iEPq zwR&s+ynL;eKnZCckA4-1c&(*iYecp_)>Vo7zBhQIoSn_z=|qLe>S&tnjOgn)#iY(N z6E=RVq`=k@G6+x$SlnOa=Qy2R+~sJWS#KzY?E-;Mw+oH4()2rZIAf5PzgmFHwlp+D)teO;=%}r!_*gyB_l*=rz}`$F@t#vlV(#fM+W&evTEj{EeXo1c9bDUR z5Jzdd_;pjrM?v?bmYzm^&@$EnLNIJv%jbdY(8P95a-efLlZtDZ9me8LSTvnWJskVY zVD+I-2EvwG5eqPHV(?)DMHc3o!)sD%DFCpn+y5__J6#W?tD8DHU z)=&%XGHb1KA9_}6`>yhIAlC49TBU>f$rujOarlRH_-Ddka*zopz51Al-Z6{b**~Az zhJ`Mi`zJISLK4NyW)&~MGkvrykHyK~y8as$9id^%tg<=h&g6l3#e|oZI#MsF`Ex}t z*WyE&aQ(-jLD71Hse#u2qJuGP4~1M+?-y(G8{YSo4FqH@p2&&H;~go2xKJ(1D)?NA zul>i~#wCqqcQVTA@8x5bwW;2Uw%oV;&XfZqe8jb(*zsL=KfPypbhJ)G8E{!%=xMhY zHw1OY^FQ>x($3coS&;RECv#J{=15t#^bb(+_Z-Yyy24uu=80FZ8r!{8 zkJHc>S>gS>6Zw8qeM@zEbH5S1GuxYxqDS`E=`1kq3(ru8=u4x}3?9qb&@oC(&#P&!YvFrTgUKHDj z9MibUSb3M|Ano%@cOpE)^g7%5QEM5O&1qJ8xJ5xk#M# zS4yNl&bfTKe|@X)CL2OVqYJJZeOA$)q`3o0v&gUu+DcLeVq(Qw4U&U{wN`5*F$}qZ zmGE_=VWj7>@NXL(17GX17^wIXQ_Arj|1YyaT3XzrA&EzJF#J|pD4$Jne>XEFvx_R^ z^;CPfZ=Z>2DfeuwhwlbB=Fi>&dp7mVs7qI@*xn9Qt*|N;0F8g%j2O3XdNyF1vA<^Q zjxN@xGG6JD&Ur2FB+RD?IB=$Bqw2-sS$ratJ7rmclz~*t#NDm1g zL6mGN+dPuu^``s;?aSd^NwYHVMIx)+4|#`e725`vcClu-- zmBTqwU5nf4!`Ib@9kUr>k~?6>>WYBxH=~(od2v;@8*vd>Z<9gZ2L$hH<;R{$OUyt> zaVZy`bR%`#GU5R|bU1#g2||X|HHC9!J6f+Kqt<@pN;ix`3_pgziIVUZ!bD>z^iTbI zT3RAV{|Xy$(_pth^)?nwQ~TUdCT?f_zcT-=`1}{Ab(IesEik^A#_^P_E3D@!n;Cd9 zyqIn;@fVNQ8)Rir!R}va7QQ^2Te;LZBA(b~8unai7)eUHl4cMUzx|ip$ajzMO&;y`uSmtAA-4Ly zcjo=F(A|z08`+>@^O{w70kvnEE3Y{s?tEKRcoAbRE+)3RzM~yZJsumsD|I6(RxyzO z(-V#7OAgyj9GJ3bq?k;=LN^r)1-$TL;UUlqw_i4v_el*O*#M4j*2+sc9vcy(fXG8V zz6D2dp{n#G-&Rvj`OcJKuArvm%e&}$CUIyGRyj7nfzdaWW)Ncke7L|8Q*cw5u*D=u z6jAPP;_nNcIaPuP`X(7OQHz_86phk)_8WRuqHu*3@&x?CBJ~F>@R}|xH0T?OHtx@% z9RiN6+*k4{<%9`okBe?Rdr(gUr%yJ)Yt9q}S~Tznk+x68!yynK-4qcogjp!)klZSL z_*oPq>@yOeKB`^{JACj5p|+w{5FcWek1jj-StPtx9#-6ZB62e~7B)d5$}a)AYalpm zl@FI$pdyg$dl#c&pu(V-E}#a6m*OyE|DKuP&I~5OYn!_9IS`*bfP9;!|JH5b4D<vBBBJhW9Gkz*w$P-{bVlB$(oxpcxLJzp4bx$c}p@ArD%_iL@+w!*i)UzDMV7Gen2%#eTI6~Qit7h?>Zz%4I9 zsmIQ*+OImuMd;OIku>YS%p~TWAyNKS)i<hOEHAABI3JxGW-ROwni5P$ z5M75m@o`(ica-i)Lf022MTfG3YzhoQesecHlS7vZZYSb>;STPEJ%0DUH98M1CUP~(j;^7+xRN-~tp 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

g+{c_v)yJ1*kx0ID9qqdc&W$v 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 )q6+cqkNt;T`sy$)}?W;spLvj;s{f}osF8DI~3 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�$Es8A{0GgS`U|SQ4SvQ`$*c^xb1cAbgfu zXMWI4OLoKKD~`>wbs37Iy&BI3gDo}r$pYG!G!XxKE%i&ehp8R8S?gI6L1*}EN(FQCyvUt>_qbu$PR zSAqo*Sk7iHBUsRR_>q?Xm4L0yEvAq1R;BD7PZ;himij0qkoV2_LvGfdNYagZVV|9B zs?DXsKK?4$T~U8k&>U{j(tC!^pPNTF5l8JPb#Hyuh|6sX-k8>s99ELl3XM&2InSz- zG~VpR8A09`i5%`FqCyAn(ZrZbYqtpS{mhmKd)QbSB{{{7Z*LeGi;c%$v3b{S zOYb@+n`d*Cj>9+?+-zB3KKzVk7P_26LGN6}rn)G499nBmn=oYq8hwmiZlYBXXQNMJ zBcBEy?UK42-|g+c>0mcES;os4$!|mWuq#Jq_Y3c3_KNpD`ek2Cg4U+zi3=o*sbulr zxR?MpZIeS)ao^^k(s*k6p_85=O)ZIq`S(7(y`j{B1$;bkCMiSEekXujTN zV#tNl4ZJ}}I7L}lZfkBj$a{XM^u@cbS;phlLk??D`rE}O!LEhg=Tv%Xp4Mu#onXGg z!`dWj)D4X_B0#))rfmz=O>wQ8Up0U<`!*6JoU5dRSU)TUpTFyYwRP_~r=aYdM*dzl z==h|d-(Jx~2Af6B^@YyO2HNn+I#dT1@8v}qxbIYe5BkaDj<=gmMAYW!(=;<@D>4LT zZ!$SNKjnOVa zGGhGrY0-*xRwlQ%KyiNp&wShtXVgVO${_lt(qQI$MxMyZvNHpZ>fBi0sz<4BH+m2a zjh0js)>zLWIK|?W9+tQXgLv||2lc2~n`$P~_-6fJ{gqD$NMA-bq?qQpW5?p=s`T<` zKgY&X9mKn|`jWT~wb(dTC^dYPJ)?I*>&1(@mlW9S71<_~;a+hN$JOhm7NN5?cS4TY zWlAoJ$|`FqKH~Dvxy|+rcgRM^*rVW~N|>2PXPdmMNnb~&@dr=bD|UETDKM;H3q5ljOTE<=h|v_dGng&MV>go&9^qJU$I zL_S{XvsMXg)VorhE!bpzD1T1NLhKPxLzjBN7_Z34thtr*i+i4}+y)Y{qeNVbh(X|A z&lp~}mWZ-dB*g7WdwSzIg63Fdb|X8S+?reUgGt`22lFf!o>N4uO}x&-W#v(u7i$zR zuIaWBh){;I3yYshQB19%jYbz}W{+OiIbN zC-k6un*?)=c{MT@uukttpL0zE{ri)ooY<|6)wzO;tlO5J_T2w&SG4C zZ$p@UI@74!G)}`R_gRR$C!S;XY(Vy{Ox_E#S6_@%Lp!|6)?GZi#C9}nQlm;g&8$FB zfl^tf0{+b6HmN5UZ2QM8F3hmOfuZ(Er?X9&Z6CLdUw>Cawhq8JF)k72?x`xg<>EP= zIB^6(hLn9Snaw!rX|UdSi#O`R_WfJDU1!+IY-%@Yw;n97yxORGmFMNjdu2S<_{|Ct zbPvuS<>l%1tV&pXVMUn@U*yfoDCgs+zNvU~?W99Y3M*mGUQXO55nKJF$UYtOjedcv z_@4kNFZ}~V8ax<0qsGL=M>P3nUHb*1$nH>yWGj|=Oj!ag)-@WHIV~w6D&;7pW7`+q9&%T z_xb>p?a%g-To0b8E%OW3B_u9_BChK&$y<*RDMpml7qVm*o={hV;3Q;`pA8xFR+*<5 zxk;{P7^--$G605+>M-zOtr+(pTjy+FY)YA0Xc+v$y?Linp&(_YhJJ~^a+@`|h`2eo z;X2|o9hr&cy|JoWbVS@M8Q`1-ug};wH1+P@?$zU1Ex0&2!f{N42k*fvu8t=qxui}< zZnZ>toR6&l8EIL+P<-c=|LGb1hp;BP&vc(ZdR+^D1Q&{Z&?6dsnhChon4Tv3BGyRb z{nM%4C0WTAasJO7T|Q4DW~~Yze17FqV%N=a<#Nqv%cRfFlRIOKD}vq1`SSopAaXbg z{Ty=QW%~{dlK&yyykPe^`W>0Kd1Z=pp23~xlkCu5a{Mnlr(*W{9zA_PKPhk2g7VqD z*TD7UCtba?^n>#IxxHwRcviC&7M}oF5AnqBbJ??-q&9KAc1!QfS(g6*Tr)MDf&@Ne zl!r@IU@<-Lhe`GK)J{ndh0|#He!{(vmx#Sh_>sa^iusPpfHBwei%)Rx2P^END@{XQ zV9ysxNjqzv7S{u%=GHcsW2NQ_&T?DbV`zN&FlWl2_7-|BPnl_ArGr(vQZ}xMW0AVS zZ2=-BeLiHun5UC-akV?^nSIC$5ZCRSzEaX>FS%;c0Q|TCAY3~py*Lkq6rRZ#r74+PpII#78ywU+Eq(-_#i(_C+xix-Mc=e$$^a|ji6p~0 zbFYE%>$jEuhhBWM!pt zgas)VE2-u3xQ;HXb45kiJU8}%ecbu*v8J8C3HSo0EHXJ{SI2w=B0V(h2XZhmdp0AVm>*@tC~C? z#WoI{sOH5h#+oVIJsJu}uHUMmbtslMWJKyqy-8^1yKlx|{Z>6|VGr%)V#cJo*p?Ps zZ42B#??h~EL}sO5b$IYty2Z7!{`JBqk;zZbuf7;9dlui4*20u``~;U(o#Cmv;~IS* z*;Kr2#86v^s{}4M(T=HB3HPe5eiS=l_Sp8py&&3mC`zTs@_L*pOY>1URl>^}@e4I1 zvD-rQegkh4LsH&AlP{Oa-6>{_bF5M~71Z@NvNcIOxw=@t_Q*#dK%8uB$|vmGrys@D(1?9nX%tF`Gg%A<$hxE-iFHKsk<5KdD1uU zPYWoFR__UW6YY?AUQrn|?n+!CaHKpD zyz8ks9oU)GG_NTi^z!~t*0Y#4+=*qg?Sbj=uGBR`!|{OZ_1p3s&wVeOaOynisRK?@ zILZmP3nv;>EV!fDOd>kQTO|1RPk05s2Ik5UjG_n~B}JPXAQ@6~Bt` z>BNr<Ycr-?ukJAU z1X(}q)=`$eQ^DHBCEyQ9E`BIdDN$+}=e;q|ojG_)_QNxSSrcxplj`Gg5-KD#Q)6~- z&-c99nq2%s_2C&}*5m<5xxY*CerxM$&9YC;2bkPViV~7z7uV{xsmp78d9aS)?;=Wf zCTw?OYMj4#PmJ7s&8zW-_T9rP#zu9UVcGA~v=k9ec!iCxFOyJNF_ZRe{Y%up8oLQ{T-CM zEn%l~49$ZqoV_F0h(e7#)3JG6zIedxJ*6+C44r)aq*zioZO8FI3 z!7;XTW?#UYRPWl$xOnuNsv<{Jo9zbp%&%^bbLnR`oGlwSq+`90PAroVvt#CbEgN!z z>-}~MuJVb6@;P3YJh8N=PV#Om@BEH8)4irpWqpI26fXL9>DX!9J*_)4KFcg;sc#DE z=7c<5Aja9u!H;Z;zLu;QSe$6w2Yj2uJ?eEGQGX^snU4CPK&)VkwsED;p7&Y$sN_Dg zDZDAWOv%>H81IuiZ9JQ&jbml^?hRkTvvZczeEpxhOhs{V)2+f~+`EVknlGNzBfQ)m zqB}e~dOIOTrRe-Z^@23;jXLRprzJHX`A&rhcH*~Qy(Bp)qWeba{Py*1Kl{|F+VEE# z6?~#Qi^(d{(TaxA_bv(ZC#sUfhi2Nx`PPW{MXJ65!R7`9LnhE#@h#+R5(ZvFL(@sM z1OhiUoryh~i4#K7%I*055tGdj1#VfB_Dd+h}?EBs&riVW56{lloxoHq)w3r(k2Ke#ua z@jlmI^6;X`{FR8o(_lrtCg5IR!h`+$Ilv}v)KIFtrRvkyOF@h%B6@x+3~32Y&z-h|1LRvze?dFTnI zzT|Z``aYG9>l80DB)Yk0kRfm)t1^+su-S@S=)UM<$8k->IN^hoal^ZGB27H1q0guM) zmCEJMuCAkW$jXX5;B zGwf@|mu_=Pl1_z0vfetUc%v=ZiBdo8#CaUr6|s-*NoZ(p?8Rl>bM@IB4h!wcPRx0# zlr-n+!z0~tpK=r$M{)`88nJ7nw$}8m-uRe6Yx;zOrTh7WuW-#sVYSj!1?bBp9Zx*DCpk=}== zR!DacFb)L#2x_`HTj?OtAY(yIIR%iQF47wf5>#>o=E{EkD`R>vQo$ME1KH=ZKhsdd z(hg~b1_@(GASo##K{cc`%0kB38)S^Z2nLG^3BVvA5hz$dL=>wx!3@=jLH)+i?%ke~s|N!rOB^^NeODA?~s@oQK* zpj|p(G%0v7EdH=qef4Ll^3rJ7}aGdqNBSkUp)jmX30*PW=ahNOv z62+M77cwv$qn7p$uEYfDL5%%C{7d(5c_Z!Q>6Fc=O33xW58oF4)a5Eh0*fhd=8cC$vhfs8S)0?+`89MT<_i})*+ft30ym_`1A z^)+UHhX5f86A=CpfrzN6fRG3R^bZig_S0@Zn|?xoA%8W@KR^H$5{3wfiu_;$Fhp1Y zD*8_l{E*K-Apn0XYJZil-x=Zm!VTbGE9mba{9pJ1{6k9o|K*4ulH?yj5E2jpAz(mO zz(8Oa7)TBf0uDq27*p^6E)!t;`Tc7gg8wS(|0Ee9Kzbp7ScJhq5ExtlA`C)cmYTm2 zEe$Mr-xdXFD>Ta434~c{)HO6QYu8`t2q^Mr*|2W`pb7xx2`nrsASw*tfCvcy=ze1Y zk-sShn2Pa7xwtP~NNC^w-=qtP{uc*`?3c{{;DA4?hG0Oh2na4BDj*E#4uuK`L4l{D zA_DN=>i)My;Lj@ISLq0m{QwYx3kU%y;3A0s_Xzm2dWZ=__*WDMVfb%=fc#lS+|PxB zF!+`Wzlnl>nhTIWtBL!TIEaR?AbuAN{}{xdRYeF8hd>k_I7ApG^sj{lP+$Is)PxG} zCkGrR0ES~KCFH*($KS2dkUy)92g&iZI)X(+1Rz3)-fBh(1^oz~4mwW>NSrTK`!&#EAat?r)<1cX$6UwGaUT3m|@2g@nNZLcguV zh`(6}Ab(Z?0mZ-O+c%s48x>Ia&nh6s`d`<rkfe^&P}qQ7nczKQ;y zHvqzaR_!pNzk2OU4z{cfI3LM7kUzh%`qJLNI4-EcyOTX}+Rkwp0|5fpCH6HOB z#sBGA1MDFF!~|crAi$~*Z2lmC7529va9}U`H);2ear{})`-%gOz@-0o90<0&_64QU(@8EG<{E# z-;}0*8Wzw$tB+rC9ITDsar|a&{Kq){tXN{4@^yv&wn_dsK>S(R{A!GYx6I#-@tgO| z|JWG+Qw=@XD}BfDo4wLM#_?x0^s7A%mhSI3ezSD{V;p~0Ll1C#UD3Yb_}z;3k8%8Y z4Lv9vU@!!8r~&^s3dbLo(1Z6-2Qa?d;@`mWhgI|d$3Zdwj^kgb=CD63q?p2SP)5HM zj(?$w!v3&|Vn7^}jc*|Sg{lEGX#Ql!vtL3FHk{u;{0rMI_@9+7VVI}@0yqN~h9Css zBA64X{X-uRaOx-^^4l}`zuWM`|Ey-gfRi>104M?`0Qms`94_+T0APHs{p-ma{LhNj zHw%0N026{@_MAYi_-_FI?kyku&#Kfn0RN&3{;Wj(AGqMpYST9h{Ch6=D+xe?$`+m$ zI#zBd7od5GIk#4~a74QAcf^cAT*^91PAD|@e?HLuYbL-&2gF5m!Ncj`xLe0o&4kNB z-U;o7Lb{u9gZ%dSd0M!EEPyVtg`+!25@c*DzE8d2>;^L7!n}q8p`1X!%))f+zRnVG z@o={_;X2@kp<{lmFo4Cr&of4u8Vi~7?Xx}@01VMaqCMQ4ejWrqXf|WU1ekE|j}IXF zj?+rk)){4m1aMloxCpp7yXd*7A)P$ry#;{h4nBZ(E-rlEaG7u)sDioxX!30)vn0sL z!@&W>!2$Y85^(ph1Ul?M8`y+Phz|q?3?nHC;$-Cn9-wVe?gB1AFI?Tj5fJKP;pUE1 zazcM+C*bY?z%k(hCVi8JbZ|$4{!AqFt4Lck+65yOqnm>T;5A!4ZPo9x{sjRSP!7m% z0-RltPIAsx-`W3Y2E>6n0YuzDYXk&%;YUZK>W~#0UC^dtxLcq1#1s0psC8Gf|9kc z1_4(UxPeK)wFpcfN6rF`1aZlUL4+W1Az`2+3x`2qBHso8fy^b3bholaI$H1_Ow>i8 z9e^1Je=y*IvCoUMTyOM33e?;r%fJpz4Gb$1Vl6DA0pCOoL&<)P#zDcq*aZRm6$=9M4(ae*5lmN% zLm|O)eF#I%E7zTzM&Q*X0#oS>0NiG!FeH^kMFb*bsD2AZIKpXg1 z8bauhTwok