Skip to content

[SKiDL BUG] KeyError: 'draw' when generating kicad5 schematic #268

@heeplr

Description

@heeplr

I attempted to generate a KiCAD5 schematic to later import it into KiCAD9.
(Netlist and SVG generation works just fine.)

The culprit seems to be a Part class that doesn't have a Part.draw attribute anymore:

KICAD9_SYMBOL_DIR="/usr/share/kicad/symbols" python main.py
WARNING: KICAD6_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/home/user/code/3rdparty/skidl/pi-digital-io/<frozen importlib._bootstrap_external>:999=>/home/user/code/3rdparty/skidl/pi-digital-io/<frozen importlib._bootstrap>:488]
WARNING: KICAD_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/home/user/code/3rdparty/skidl/pi-digital-io/<frozen importlib._bootstrap_external>:999=>/home/user/code/3rdparty/skidl/pi-digital-io/<frozen importlib._bootstrap>:488]
WARNING: KICAD8_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/home/user/code/3rdparty/skidl/pi-digital-io/<frozen importlib._bootstrap_external>:999=>/home/user/code/3rdparty/skidl/pi-digital-io/<frozen importlib._bootstrap>:488]
WARNING: KICAD7_SYMBOL_DIR environment variable is missing, so the default KiCad symbol libraries won't be searched. @ [/home/user/code/3rdparty/skidl/pi-digital-io/<frozen importlib._bootstrap_external>:999=>/home/user/code/3rdparty/skidl/pi-digital-io/<frozen importlib._bootstrap>:488]
Traceback (most recent call last):
  File "/home/user/code/3rdparty/skidl/skidl/src/skidl/skidlbaseobj.py", line 63, in __getattr__
    return self.__getattribute__("fields")[key]
           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^
KeyError: 'draw'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/user/code/3rdparty/skidl/pi-digital-io/main.py", line 116, in <module>
    generate_schematic(tool="kicad5")
  File "/home/user/code/3rdparty/skidl/skidl/src/skidl/circuit.py", line 1318, in generate_schematic
    tool_modules[tool].gen_schematic(self, **kwargs)
  File "/home/user/code/3rdparty/skidl/skidl/src/skidl/tools/kicad5/gen_schematic.py", line 723, in gen_schematic
    preprocess_circuit(circuit, **options)
  File "/home/user/code/3rdparty/skidl/skidl/src/skidl/tools/kicad5/gen_schematic.py", line 666, in preprocess_circuit
    calc_part_bbox(part)
  File "/home/user/code/3rdparty/skidl/skidl/src/skidl/tools/kicad5/gen_schematic.py", line 631, in calc_part_bbox
    bare_bboxes = calc_symbol_bbox(part)[1:]
                  ^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/code/3rdparty/skidl/skidl/src/skidl/tools/kicad5/bboxes.py", line 113, in calc_symbol_bbox
    for obj in part.draw:
               ^^^^^^^^^
  File "/home/user/code/3rdparty/skidl/skidl/src/skidl/part.py", line 612, in __getattr__
    return SkidlBaseObject.__getattr__(self, attr)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/user/code/3rdparty/skidl/skidl/src/skidl/skidlbaseobj.py", line 65, in __getattr__
    raise AttributeError
AttributeError

Source:

if __name__ == "__main__":
     ... your circuit ...

    generate_schematic(tool="kicad5")
  • gentoo
  • Python 3.12.11
  • SKiDL master branch at 48da23

PS: Thank you so much for all your work on this awesome project!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions