Skip to content

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

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions