-
Notifications
You must be signed in to change notification settings - Fork 150
Description
Describe the bug
When custom components don't contain the datasheet property, then attempting to parse it throws an error.
To Reproduce
Steps to reproduce the behavior:
- Load a part that fits the description.
zif = Part('220-3342-00-0602J.kicad_sym','220-3342-00-0602J')
Expected behavior
I expected the part to load without error.
Fix
The problem exists in (
skidl/src/skidl/tools/kicad8/lib.py
Line 462 in cad164f
| part.datasheet = props["datasheet"][2] |
Specifically
# Populate part fields from symbol properties. Properties will also be included below in drawing commands.
props = {
prop[1].lower(): prop
for prop in part.part_defn
if prop[0].value().lower() == "property"
}
part.ref_prefix = props["reference"][2]
part.value = props["value"][2]
part.fplist.append(props["footprint"][2])
part.datasheet = props["datasheet"][2]
part.draw_cmds[1].extend([props["reference"], props["value"]])
Line 462: if props datasheet[2] doesn't exist, then the script errors out.
Replace line 462 with these two lines:
part.datasheet = props.get("datasheet", ["", "", ""])
part.datasheet = part.datasheet[2] if len(part.datasheet) > 2 else ""
I have no clue if this is the most robust or clean way of handling this, but I do know that this fixes my issue.
Desktop (please complete the following information):
- Windows 11 Pro.
- Jupyter Notebook 7.2.2
- Python 3.12.7
- SKiDL version 2.0.1
Additional context
This will likely need to be changed in all the different kicad version lib.py's. The troublesome part, downloaded from the normal part sites, is attached.