Skip to content

[SKiDL BUG] Using components that do not contain a defined datasheet property throws 'Key Error' #248

@keithgh1

Description

@keithgh1

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:

  1. 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 (

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.

220-3342-00-0602J.zip

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions