Measure exact routed pad-to-pad signal lengths from KiCad PCB files.
Project description
kicad-signal-path
kicad-signal-path measures exact routed pad-to-pad signal lengths directly from KiCad .kicad_pcb files.
It supports:
- single pad-to-pad path measurement
- regex-based source and destination net matching
- automatic 2-pin bridge detection for series resistors and similar pass-through parts
- separate
Track mm,Via mm,Total mm, andDelta mmreporting - CLI and Python usage from the same package
Install
Run it without installing:
uvx kicad-signal-path --help
Install it as a CLI tool:
uv tool install kicad-signal-path
Add it to a Python project:
uv add kicad-signal-path
Quick Start
Single path measurement:
kicad-signal-path board.kicad_pcb --start U1:B3 --end J1:H23
Regex batch matching:
kicad-signal-path \
board.kicad_pcb \
--src-net-regex '/AXIS_I_(.*)/' \
--dst-net-template '/FMC_AXIS_I_($1)/'
Verbose path breakdown:
kicad-signal-path \
board.kicad_pcb \
--start U1:B3 \
--end J1:H23 \
--verbose
Use the module form if you prefer:
python -m kicad_signal_path --help
Development
Create a local environment and install the project in editable mode through uv:
uv sync --dev
Run tests:
uv run pytest
Build distributable artifacts:
uv build --no-sources
Local smoke test against built artifacts:
uv run --isolated --no-project --with dist/*.whl tests/smoke_test.py
uv run --isolated --no-project --with dist/*.tar.gz tests/smoke_test.py
Release
This repo is prepared for public PyPI publishing with uv and GitHub Actions.
- Create the PyPI project
kicad-signal-path. - In PyPI trusted publishing, allow GitHub repository
Leonui/kicad-signal-path. - Set the trusted publishing workflow to
.github/workflows/publish.yml. - Set the trusted publishing environment name to
pypi. - Push a version tag such as
v0.1.0.
Manual local publish also works after authentication is configured:
uv publish
Test Data
This repository intentionally ships no KiCad board design files. Tests generate a small synthetic board description at runtime so the package can be validated without bundling proprietary PCB data.
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_signal_path-0.1.0.tar.gz.
File metadata
- Download URL: kicad_signal_path-0.1.0.tar.gz
- Upload date:
- Size: 17.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
feed75d3869d298d91a8a1b1e2b4cc736e3b32cb6f6f3f193686fd9e07b19726
|
|
| MD5 |
bd2f9762aed5b4ac3771e943dcd615d7
|
|
| BLAKE2b-256 |
8eeb09df953a9363b30d4414c3407e39c9730d3c579b4128020600308926ca4d
|
File details
Details for the file kicad_signal_path-0.1.0-py3-none-any.whl.
File metadata
- Download URL: kicad_signal_path-0.1.0-py3-none-any.whl
- Upload date:
- Size: 21.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8b4c1867456bfbb32c149c49e672a21954f81028adb43fd1e417fc333bcc51a
|
|
| MD5 |
2701c5199af0d11d851577bd268f0c73
|
|
| BLAKE2b-256 |
e6011012cbfc3e0f9639bb0503798bba661330f5710d1f89dad39a8c69f6ff03
|