pcbflow: Examples error on a fresh install

$ git clone https://github.com/michaelgale/pcbflow.git
Cloning into 'pcbflow'...
remote: Enumerating objects: 645, done.
remote: Counting objects: 100% (23/23), done.
remote: Compressing objects: 100% (8/8), done.
remote: Total 645 (delta 18), reused 15 (delta 15), pack-reused 622
Receiving objects: 100% (645/645), 4.82 MiB | 4.85 MiB/s, done.
Resolving deltas: 100% (450/450), done.
$ cd pcbflow
$ python setup.py install
running install
/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/setuptools/command/install.py:34: SetuptoolsDeprecationWarning: setup.py install is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/setuptools/command/easy_install.py:144: EasyInstallDeprecationWarning: easy_install command is deprecated. Use build and pip and other standards-based tools.
  warnings.warn(
running bdist_egg
running egg_info
creating pcbflow.egg-info
writing pcbflow.egg-info/PKG-INFO
writing dependency_links to pcbflow.egg-info/dependency_links.txt
writing requirements to pcbflow.egg-info/requires.txt
writing top-level names to pcbflow.egg-info/top_level.txt
writing manifest file 'pcbflow.egg-info/SOURCES.txt'
reading manifest file 'pcbflow.egg-info/SOURCES.txt'
adding license file 'LICENSE.md'
writing manifest file 'pcbflow.egg-info/SOURCES.txt'
installing library code to build/bdist.macosx-12.3-arm64/egg
running install_lib
running build_py
creating build
creating build/lib
creating build/lib/pcbflow
copying pcbflow/gerber.py -> build/lib/pcbflow
copying pcbflow/board.py -> build/lib/pcbflow
copying pcbflow/excellon.py -> build/lib/pcbflow
copying pcbflow/kicad.py -> build/lib/pcbflow
copying pcbflow/util.py -> build/lib/pcbflow
copying pcbflow/route.py -> build/lib/pcbflow
copying pcbflow/__init__.py -> build/lib/pcbflow
copying pcbflow/sexp_parser.py -> build/lib/pcbflow
copying pcbflow/drc.py -> build/lib/pcbflow
copying pcbflow/hershey.py -> build/lib/pcbflow
copying pcbflow/eagle.py -> build/lib/pcbflow
copying pcbflow/layer.py -> build/lib/pcbflow
copying pcbflow/svgout.py -> build/lib/pcbflow
copying pcbflow/part.py -> build/lib/pcbflow
copying pcbflow/draw.py -> build/lib/pcbflow
creating build/lib/pcbflow/footprints
copying pcbflow/footprints/sot.py -> build/lib/pcbflow/footprints
copying pcbflow/footprints/xtal.py -> build/lib/pcbflow/footprints
copying pcbflow/footprints/pin_header.py -> build/lib/pcbflow/footprints
copying pcbflow/footprints/__init__.py -> build/lib/pcbflow/footprints
copying pcbflow/footprints/tssop.py -> build/lib/pcbflow/footprints
copying pcbflow/footprints/special_conn.py -> build/lib/pcbflow/footprints
copying pcbflow/footprints/special_pcb.py -> build/lib/pcbflow/footprints
copying pcbflow/footprints/smd_discrete.py -> build/lib/pcbflow/footprints
copying pcbflow/footprints/soic.py -> build/lib/pcbflow/footprints
copying pcbflow/footprints/qfn.py -> build/lib/pcbflow/footprints
copying pcbflow/footprints/bga.py -> build/lib/pcbflow/footprints
creating build/bdist.macosx-12.3-arm64
creating build/bdist.macosx-12.3-arm64/egg
creating build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/gerber.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/board.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/excellon.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/kicad.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/util.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
creating build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/sot.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/xtal.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/pin_header.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/__init__.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/tssop.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/special_conn.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/special_pcb.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/smd_discrete.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/soic.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/qfn.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/footprints/bga.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints
copying build/lib/pcbflow/route.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/__init__.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/sexp_parser.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/drc.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/hershey.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/eagle.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/layer.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/svgout.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/part.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
copying build/lib/pcbflow/draw.py -> build/bdist.macosx-12.3-arm64/egg/pcbflow
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/gerber.py to gerber.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/board.py to board.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/excellon.py to excellon.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/kicad.py to kicad.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/util.py to util.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/sot.py to sot.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/xtal.py to xtal.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/pin_header.py to pin_header.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/__init__.py to __init__.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/tssop.py to tssop.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/special_conn.py to special_conn.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/special_pcb.py to special_pcb.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/smd_discrete.py to smd_discrete.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/soic.py to soic.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/qfn.py to qfn.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/footprints/bga.py to bga.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/route.py to route.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/__init__.py to __init__.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/sexp_parser.py to sexp_parser.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/drc.py to drc.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/hershey.py to hershey.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/eagle.py to eagle.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/layer.py to layer.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/svgout.py to svgout.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/part.py to part.cpython-310.pyc
byte-compiling build/bdist.macosx-12.3-arm64/egg/pcbflow/draw.py to draw.cpython-310.pyc
creating build/bdist.macosx-12.3-arm64/egg/EGG-INFO
installing scripts to build/bdist.macosx-12.3-arm64/egg/EGG-INFO/scripts
running install_scripts
running build_scripts
creating build/scripts-3.10
copying scripts/lbrlist.py -> build/scripts-3.10
copying scripts/kilist.py -> build/scripts-3.10
changing mode of build/scripts-3.10/lbrlist.py from 644 to 755
changing mode of build/scripts-3.10/kilist.py from 644 to 755
creating build/bdist.macosx-12.3-arm64/egg/EGG-INFO/scripts
copying build/scripts-3.10/kilist.py -> build/bdist.macosx-12.3-arm64/egg/EGG-INFO/scripts
copying build/scripts-3.10/lbrlist.py -> build/bdist.macosx-12.3-arm64/egg/EGG-INFO/scripts
changing mode of build/bdist.macosx-12.3-arm64/egg/EGG-INFO/scripts/kilist.py to 755
changing mode of build/bdist.macosx-12.3-arm64/egg/EGG-INFO/scripts/lbrlist.py to 755
copying pcbflow.egg-info/PKG-INFO -> build/bdist.macosx-12.3-arm64/egg/EGG-INFO
copying pcbflow.egg-info/SOURCES.txt -> build/bdist.macosx-12.3-arm64/egg/EGG-INFO
copying pcbflow.egg-info/dependency_links.txt -> build/bdist.macosx-12.3-arm64/egg/EGG-INFO
copying pcbflow.egg-info/requires.txt -> build/bdist.macosx-12.3-arm64/egg/EGG-INFO
copying pcbflow.egg-info/top_level.txt -> build/bdist.macosx-12.3-arm64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
pcbflow.__pycache__.__init__.cpython-310: module references __file__
creating dist
creating 'dist/pcbflow-0.1.0-py3.10.egg' and adding 'build/bdist.macosx-12.3-arm64/egg' to it
removing 'build/bdist.macosx-12.3-arm64/egg' (and everything under it)
Processing pcbflow-0.1.0-py3.10.egg
creating /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pcbflow-0.1.0-py3.10.egg
Extracting pcbflow-0.1.0-py3.10.egg to /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Adding pcbflow 0.1.0 to easy-install.pth file
Installing kilist.py script to /Users/russ/.asdf/installs/python/3.10.6/bin
Installing lbrlist.py script to /Users/russ/.asdf/installs/python/3.10.6/bin

Installed /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pcbflow-0.1.0-py3.10.egg
Processing dependencies for pcbflow==0.1.0
Searching for cairosvg
Reading https://pypi.org/simple/cairosvg/
/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning:  is an invalid version and will not be supported in a future release
  warnings.warn(
/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 2.0.0rc1.linux-x86-64 is an invalid version and will not be supported in a future release
  warnings.warn(
/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: x86-64 is an invalid version and will not be supported in a future release
  warnings.warn(
/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pkg_resources/__init__.py:123: PkgResourcesDeprecationWarning: 2.1.3.linux-x86-64 is an invalid version and will not be supported in a future release
  warnings.warn(
Downloading https://files.pythonhosted.org/packages/01/a5/1866b42151f50453f1a0d28fc4c39f5be5f412a2e914f33449c42daafdf1/CairoSVG-2.7.1-py3-none-any.whl#sha256=8a5222d4e6c3f86f1f7046b63246877a63b49923a1cd202184c3a634ef546b3b
Best match: CairoSVG 2.7.1
Processing CairoSVG-2.7.1-py3-none-any.whl
Installing CairoSVG-2.7.1-py3-none-any.whl to /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Adding CairoSVG 2.7.1 to easy-install.pth file
Installing cairosvg script to /Users/russ/.asdf/installs/python/3.10.6/bin

Installed /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/CairoSVG-2.7.1-py3.10.egg
Searching for svgwrite
Reading https://pypi.org/simple/svgwrite/
Downloading https://files.pythonhosted.org/packages/84/15/640e399579024a6875918839454025bb1d5f850bb70d96a11eabb644d11c/svgwrite-1.4.3-py3-none-any.whl#sha256=bb6b2b5450f1edbfa597d924f9ac2dd099e625562e492021d7dd614f65f8a22d
Best match: svgwrite 1.4.3
Processing svgwrite-1.4.3-py3-none-any.whl
Installing svgwrite-1.4.3-py3-none-any.whl to /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Adding svgwrite 1.4.3 to easy-install.pth file

Installed /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/svgwrite-1.4.3-py3.10.egg
Searching for pytest
Reading https://pypi.org/simple/pytest/
Downloading https://files.pythonhosted.org/packages/42/8f/609a38adb94cf52f8e4bf1aafa072dcf5d08fa3cb76c506517ea0ae042d5/pytest-8.0.0rc1-py3-none-any.whl#sha256=6c30d4c4409c5d227ef936678b72c56b6fbaed28a6ee4eafd2c93ed9a24c65af
Best match: pytest 8.0.0rc1
Processing pytest-8.0.0rc1-py3-none-any.whl
Installing pytest-8.0.0rc1-py3-none-any.whl to /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Adding pytest 8.0.0rc1 to easy-install.pth file
Installing py.test script to /Users/russ/.asdf/installs/python/3.10.6/bin
Installing pytest script to /Users/russ/.asdf/installs/python/3.10.6/bin

Installed /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pytest-8.0.0rc1-py3.10.egg
Searching for cssselect2
Reading https://pypi.org/simple/cssselect2/
Downloading https://files.pythonhosted.org/packages/9d/3a/e39436efe51894243ff145a37c4f9a030839b97779ebcc4f13b3ba21c54e/cssselect2-0.7.0-py3-none-any.whl#sha256=fd23a65bfd444595913f02fc71f6b286c29261e354c41d722ca7a261a49b5969
Best match: cssselect2 0.7.0
Processing cssselect2-0.7.0-py3-none-any.whl
Installing cssselect2-0.7.0-py3-none-any.whl to /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Adding cssselect2 0.7.0 to easy-install.pth file

Installed /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/cssselect2-0.7.0-py3.10.egg
Searching for cairocffi
Reading https://pypi.org/simple/cairocffi/
Downloading https://files.pythonhosted.org/packages/17/be/a5d2c16317c6a890502725970589ae7f06cfc66b2e6916ba0a86973403c8/cairocffi-1.6.1-py3-none-any.whl#sha256=aa78ee52b9069d7475eeac457389b6275aa92111895d78fbaa2202a52dac112e
Best match: cairocffi 1.6.1
Processing cairocffi-1.6.1-py3-none-any.whl
Installing cairocffi-1.6.1-py3-none-any.whl to /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Adding cairocffi 1.6.1 to easy-install.pth file

Installed /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/cairocffi-1.6.1-py3.10.egg
Searching for tomli>=1.0.0
Reading https://pypi.org/simple/tomli/
Downloading https://files.pythonhosted.org/packages/97/75/10a9ebee3fd790d20926a90a2547f0bf78f371b2f13aa822c759680ca7b9/tomli-2.0.1-py3-none-any.whl#sha256=939de3e7a6161af0c887ef91b7d41a53e7c5a1ca976325f429cb46ea9bc30ecc
Best match: tomli 2.0.1
Processing tomli-2.0.1-py3-none-any.whl
Installing tomli-2.0.1-py3-none-any.whl to /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Adding tomli 2.0.1 to easy-install.pth file

Installed /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/tomli-2.0.1-py3.10.egg
Searching for exceptiongroup>=1.0.0rc8
Reading https://pypi.org/simple/exceptiongroup/
Downloading https://files.pythonhosted.org/packages/b8/9a/5028fd52db10e600f1c4674441b968cf2ea4959085bfb5b99fb1250e5f68/exceptiongroup-1.2.0-py3-none-any.whl#sha256=4bfd3996ac73b41e9b9628b04e079f193850720ea5945fc96a08633c66912f14
Best match: exceptiongroup 1.2.0
Processing exceptiongroup-1.2.0-py3-none-any.whl
Installing exceptiongroup-1.2.0-py3-none-any.whl to /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Adding exceptiongroup 1.2.0 to easy-install.pth file

Installed /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/exceptiongroup-1.2.0-py3.10.egg
Searching for pluggy<2.0,>=1.3.0
Reading https://pypi.org/simple/pluggy/
Downloading https://files.pythonhosted.org/packages/05/b8/42ed91898d4784546c5f06c60506400548db3f7a4b3fb441cba4e5c17952/pluggy-1.3.0-py3-none-any.whl#sha256=d89c696a773f8bd377d18e5ecda92b7a3793cbe66c87060a6fb58c7b6e1061f7
Best match: pluggy 1.3.0
Processing pluggy-1.3.0-py3-none-any.whl
Installing pluggy-1.3.0-py3-none-any.whl to /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Adding pluggy 1.3.0 to easy-install.pth file

Installed /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pluggy-1.3.0-py3.10.egg
Searching for iniconfig
Reading https://pypi.org/simple/iniconfig/
Downloading https://files.pythonhosted.org/packages/ef/a6/62565a6e1cf69e10f5727360368e451d4b7f58beeac6173dc9db836a5b46/iniconfig-2.0.0-py3-none-any.whl#sha256=b6a85871a79d2e3b22d2d1b94ac2824226a63c6b741c88f7ae975f18b6778374
Best match: iniconfig 2.0.0
Processing iniconfig-2.0.0-py3-none-any.whl
Installing iniconfig-2.0.0-py3-none-any.whl to /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Adding iniconfig 2.0.0 to easy-install.pth file

Installed /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/iniconfig-2.0.0-py3.10.egg
Searching for Pillow==9.2.0
Best match: Pillow 9.2.0
Adding Pillow 9.2.0 to easy-install.pth file

Using /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Searching for shapely==2.0a1
Best match: shapely 2.0a1
Adding shapely 2.0a1 to easy-install.pth file

Using /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Searching for tinycss2==1.1.1
Best match: tinycss2 1.1.1
Adding tinycss2 1.1.1 to easy-install.pth file

Using /Users/russ/.local/lib/python3.10/site-packages
Searching for defusedxml==0.7.1
Best match: defusedxml 0.7.1
Adding defusedxml 0.7.1 to easy-install.pth file

Using /Users/russ/.local/lib/python3.10/site-packages
Searching for packaging==21.3
Best match: packaging 21.3
Adding packaging 21.3 to easy-install.pth file

Using /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Searching for numpy==1.23.5
Best match: numpy 1.23.5
Adding numpy 1.23.5 to easy-install.pth file
Installing f2py script to /Users/russ/.asdf/installs/python/3.10.6/bin
Installing f2py3 script to /Users/russ/.asdf/installs/python/3.10.6/bin
Installing f2py3.10 script to /Users/russ/.asdf/installs/python/3.10.6/bin

Using /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Searching for webencodings==0.5.1
Best match: webencodings 0.5.1
Adding webencodings 0.5.1 to easy-install.pth file

Using /Users/russ/.local/lib/python3.10/site-packages
Searching for cffi==1.15.1
Best match: cffi 1.15.1
Adding cffi 1.15.1 to easy-install.pth file

Using /Users/russ/.local/lib/python3.10/site-packages
Searching for pyparsing==3.0.9
Best match: pyparsing 3.0.9
Adding pyparsing 3.0.9 to easy-install.pth file

Using /Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages
Searching for pycparser==2.21
Best match: pycparser 2.21
Adding pycparser 2.21 to easy-install.pth file

Using /Users/russ/.local/lib/python3.10/site-packages
Finished processing dependencies for pcbflow==0.1.0

$ cd examples
$ python basic/blank.py
Traceback (most recent call last):
  File "/Users/russ/Sites/pcbflow/examples/basic/blank.py", line 10, in <module>
    brd.fill_layer("GTL", "GND")
  File "/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pcbflow-0.1.0-py3.10.egg/pcbflow/board.py", line 249, in fill_layer
    lyr.fill_poly = g.difference(exclusions.buffer(self.drc.clearance))
AttributeError: 'NoneType' object has no attribute 'buffer'

$ python basic/holes.py
Traceback (most recent call last):
  File "/Users/russ/Sites/pcbflow/examples/basic/holes.py", line 17, in <module>
    brd.fill_layer("GTL", "GND")
  File "/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pcbflow-0.1.0-py3.10.egg/pcbflow/board.py", line 249, in fill_layer
    lyr.fill_poly = g.difference(exclusions.buffer(self.drc.clearance))
AttributeError: 'NoneType' object has no attribute 'buffer'

$ cd sample
$ python sample.py
WARNING: fanout for R3 requires at least one net name to match against pad names
Traceback (most recent call last):
  File "/Users/russ/Sites/pcbflow/examples/sample/sample.py", line 38, in <module>
    usb_con = EaglePart(
  File "/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pcbflow-0.1.0-py3.10.egg/pcbflow/eagle.py", line 90, in __init__
    tree = ET.parse(self.libraryfile)
  File "/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/xml/etree/ElementTree.py", line 1222, in parse
    tree.parse(source, parser)
  File "/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/xml/etree/ElementTree.py", line 569, in parse
    source = open(source, "rb")
FileNotFoundError: [Errno 2] No such file or directory: 'sparkfun.lbr'

About this issue

  • Original URL
  • State: closed
  • Created 6 months ago
  • Comments: 19 (10 by maintainers)

Most upvoted comments

Try this pip install --upgrade shapely and pip list to check the version

Thanks for the quick reply! Just pulled, still getting this error:

 % python basic/blank.py
Traceback (most recent call last):
  File "/Users/russ/Sites/pcbflow/examples/basic/blank.py", line 11, in <module>
    brd.fill_layer("GTL", "GND")
  File "/Users/russ/.asdf/installs/python/3.10.6/lib/python3.10/site-packages/pcbflow-0.2.0-py3.10.egg/pcbflow/board.py", line 247, in fill_layer
    lyr.fill_poly = g.difference(exclusions.buffer(self.drc.clearance))
AttributeError: 'NoneType' object has no attribute 'buffer'

BTW, if it needs another version of Python, or some other requirements - I’m happy to install, just no sure where to get them (e.g. sparkfun.lbr).

Side/background: I am a total beginner at designing boards, but like programming. For CAD, I decided to learn OpenSCAD first - this seems similar! So, I have near-zero context for fixing outside of reading your README.