Core KiCad parser, round-trip, and 2D rendering tooling
Project description
KiCad Monkey
▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
▓▓▓▓░░░░░░▓▓░░░░░░▓▓▓▓
░░░░▓▓░░░░░░░░░░░░░░░░░░▓▓░░░░ ░░░░▓▓░░ ░░░░░░ ░░▓▓░░░░ ░░▓▓░░ ██░░░░░░ ██░░▓▓░░ ▓▓░░░░░░░░░░░░░░░░░░▓▓ ▓▓░░░░░░░░░░░░░░▓▓ ▓▓▓▓░░░░░░▓▓▓▓ ░░ ▓▓▓▓▓▓ ▓▓ ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ ▓▓▓▓░░▓▓░░▓▓▓▓
kicad_monkey is a focused Python package for KiCad source-file parsing,
round-trip modeling, close-to-format utilities, and IR-backed 2D rendering.
Current scope:
- KiCad S-expression parsing helpers
- schematic, symbol-library, PCB, footprint, project, and design OOP facades
- property cleanup and model mutation helpers
- netlist and connectivity utilities
- plotter-style IR and SVG rendering entrypoints
Larger workflow commands and heavier application orchestration should live in
downstream packages such as kicad-cruncher.
Install
For library use inside an existing Python environment:
pip install kicad-monkey
For development:
git clone https://github.com/wavenumber-eng/kicad_monkey.git
cd kicad_monkey
uv sync --extra test
Testing
Rack is the primary public gate:
uv run --extra test python tests/rack.py run L0_foundation
uv run --extra test python tests/rack.py run L99_signoff
L99_signoff checks release metadata, changelog coverage, public API contract
resolution, API design-doc ownership, Rack test ownership, corpus archive
hygiene, and the current ruff/pyright ratchet state.
The redistributable KiCad corpus is transported as tests/corpus/kicad.zip.
The loose mirror is ignored locally; test helpers extract it on demand when no
external corpus is configured.
API Shape
The promoted package-root API is recorded in
kicad_monkey.kicad_api_contract. The broad package __all__ remains a
provisional discovery surface while kicad-cruncher integration proves which
symbols should graduate into the durable public contract.
The public OOP facade groups and supporting public classes are documented under docs/design/api. L99 fails when a promoted public class or major interface is missing design documentation or Rack test ownership.
Typical entrypoints:
from kicad_monkey import KiCadDesign, KiCadPcb, KiCadSchematic
schematic = KiCadSchematic.from_file("design.kicad_sch")
board = KiCadPcb.from_file("board.kicad_pcb")
design = KiCadDesign.from_project_file("project.kicad_pro")
SVG generation goes through the IR-backed rendering path.
Fixture Model
Public fixtures should be redistributable and package-local when possible. Broader fixture families should use this shape:
input/reference_output/output/
output/ is transient and should stay local or temporary.
Documentation
License
MIT.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file kicad_monkey-2026.5.31.tar.gz.
File metadata
- Download URL: kicad_monkey-2026.5.31.tar.gz
- Upload date:
- Size: 2.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9218de1d26d3e8a14b6815d9f9360456ad670b256565011706aece4d55ce9ee
|
|
| MD5 |
bb35a012215b8f9c532142a23d58b330
|
|
| BLAKE2b-256 |
963d871f817c697eeab843d0d82f98a91a74d8853c19b9f8d8467abf2591e02f
|
Provenance
The following attestation bundles were made for kicad_monkey-2026.5.31.tar.gz:
Publisher:
release.yml on wavenumber-eng/kicad_monkey
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kicad_monkey-2026.5.31.tar.gz -
Subject digest:
d9218de1d26d3e8a14b6815d9f9360456ad670b256565011706aece4d55ce9ee - Sigstore transparency entry: 1687051427
- Sigstore integration time:
-
Permalink:
wavenumber-eng/kicad_monkey@abe035e6519b76228675f92f08de07570ca90d24 -
Branch / Tag:
refs/tags/v2026.5.31 - Owner: https://github.com/wavenumber-eng
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@abe035e6519b76228675f92f08de07570ca90d24 -
Trigger Event:
release
-
Statement type:
File details
Details for the file kicad_monkey-2026.5.31-py3-none-any.whl.
File metadata
- Download URL: kicad_monkey-2026.5.31-py3-none-any.whl
- Upload date:
- Size: 611.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3fb3e43dd149fb152fe11220e43ca16d930da5af120d2bd53f445c9b05f3209f
|
|
| MD5 |
4c578b24e93d835b1d5dc07ad8c0e4fc
|
|
| BLAKE2b-256 |
b62f8f85d6869931a595d1cab1903dae12d51d740282357f84f8df5873685e8f
|
Provenance
The following attestation bundles were made for kicad_monkey-2026.5.31-py3-none-any.whl:
Publisher:
release.yml on wavenumber-eng/kicad_monkey
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kicad_monkey-2026.5.31-py3-none-any.whl -
Subject digest:
3fb3e43dd149fb152fe11220e43ca16d930da5af120d2bd53f445c9b05f3209f - Sigstore transparency entry: 1687052315
- Sigstore integration time:
-
Permalink:
wavenumber-eng/kicad_monkey@abe035e6519b76228675f92f08de07570ca90d24 -
Branch / Tag:
refs/tags/v2026.5.31 - Owner: https://github.com/wavenumber-eng
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@abe035e6519b76228675f92f08de07570ca90d24 -
Trigger Event:
release
-
Statement type: