kicad-libsync
Watch your Downloads folder and merge vendor KiCad library zips into the
KiCad project you are working on -- footprints into <Lib>.pretty, symbols
into <Lib>.kicad_sym, both registered in the project lib tables, with the
symbol's Footprint property rewritten to <Lib>:<footprint> so KiCad
actually resolves it.
Two vendor export layouts are recognized:
- Ultra Librarian --
KiCADv6/with afootprints.pretty/directory next to the.kicad_sym. - SnapMagic --
.kicad_modfiles flat at the zip root next to the.kicad_sym, with the footprint reference prefixed by the part name (the prefix is stripped on import).
Any other zip that lands in Downloads is logged at DEBUG and ignored.
Install
uv tool install kicad-libsync
Use
kicad-libsync watch --project <kicad-project-dir> # poll Downloads, import new zips
kicad-libsync import --project . vendor-package.zip # import specific zips now
kicad-libsync status --project . # libraries, table entries, processed count
kicad-libsync remove --project . SOME_PART # drop a symbol and its orphaned footprint
--project defaults to the current directory, so from inside the project
kicad-libsync watch is usually enough.
Configuring the watcher
Settings layer: CLI flags > environment > ~/.config/kicad-libsync/config.toml > autodetection.
# ~/.config/kicad-libsync/config.toml
project = "/path/to/your/kicad/project"
downloads = "/path/to/your/Downloads"
lib_name = "VendorParts" # default: the .kicad_pro stem
poll_seconds = 2.0
Environment overrides: KICAD_LIBSYNC_PROJECT, KICAD_LIBSYNC_DOWNLOADS,
KICAD_LIBSYNC_POLL (a .env in the working directory is loaded too).
Per-run flags for watch: --project, --downloads, --lib-name,
--poll, --backfill (also import zips already sitting in Downloads at
startup), --overwrite (replace same-named symbols/footprints instead of
skipping them with a warning).
If downloads is not set anywhere, the tool looks for a single
/mnt/c/Users/*/Downloads (WSL, excluding the Windows system accounts) and
falls back to ~/Downloads. The folder it settled on is logged at INFO on
every run.
Full reference, including the processed-state ledger and a troubleshooting table: docs/configuration.md.
Docs
Development
This is a frob-enabled project: frob <verb> is the interface, not a
make wrapper around it.
uv sync
cp .env.example .env # fill in real values; .env is gitignored
frob test # select and run tests for the touched set (or --all)
frob format # ruff check --fix + ruff format
frob coverage # refresh coverage.xml / the coverage stamp
frob check # the aggregate gate: ruff, ty, frob cycle/dup/arch/...
make install/make clean/make upload remain for bootstrap and
build/publish -- see the Makefile.
Releasing
Tagging v<version> on main publishes to PyPI via GitHub Actions
(.github/workflows/release.yml) using OIDC trusted publishing -- no API
token is stored in this repo. The workflow refuses to publish if the tag
does not match project.version in pyproject.toml.
make upload # patch-bump pyproject.toml, commit, push, and push the v<version> tag
make upload only tags; the tag push is what publishes. For a minor or
major bump, edit project.version in pyproject.toml by hand, commit, and
push the matching tag yourself:
git commit -am "chore: bump version to 0.2.0"
git tag v0.2.0 && git push origin main v0.2.0
License
MIT -- see LICENSE.
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_libsync-0.1.0.tar.gz.
File metadata
- Download URL: kicad_libsync-0.1.0.tar.gz
- Upload date:
- Size: 24.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9ac46319773666c7183e4140565c43ef13226a4a76f9059b560bc58993b3b49f
|
|
| MD5 |
6d78be631099a607e91d170eee0d3d1b
|
|
| BLAKE2b-256 |
7591daa19df3f8e68ed59bac265f14be2cdc1451a2a5681a1e7226945fbd919b
|
Provenance
The following attestation bundles were made for kicad_libsync-0.1.0.tar.gz:
Publisher:
release.yml on lognd/kicad-libsync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kicad_libsync-0.1.0.tar.gz -
Subject digest:
9ac46319773666c7183e4140565c43ef13226a4a76f9059b560bc58993b3b49f - Sigstore transparency entry: 2752685123
- Sigstore integration time:
-
Permalink:
lognd/kicad-libsync@beed412e2536363ec589d6592f1175135b759e13 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/lognd
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@beed412e2536363ec589d6592f1175135b759e13 -
Trigger Event:
push
-
Statement type:
File details
Details for the file kicad_libsync-0.1.0-py3-none-any.whl.
File metadata
- Download URL: kicad_libsync-0.1.0-py3-none-any.whl
- Upload date:
- Size: 30.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
184b4ac23b5274488d43b40040c1047a4f372e500da3173cbd9d38a141ea8763
|
|
| MD5 |
f75117302fd01582a1746ab63205e91b
|
|
| BLAKE2b-256 |
e7e8cb9b735908030020dce22920623c64b89745d59144e8cde2b67d0991b71f
|
Provenance
The following attestation bundles were made for kicad_libsync-0.1.0-py3-none-any.whl:
Publisher:
release.yml on lognd/kicad-libsync
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
kicad_libsync-0.1.0-py3-none-any.whl -
Subject digest:
184b4ac23b5274488d43b40040c1047a4f372e500da3173cbd9d38a141ea8763 - Sigstore transparency entry: 2752685156
- Sigstore integration time:
-
Permalink:
lognd/kicad-libsync@beed412e2536363ec589d6592f1175135b759e13 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/lognd
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@beed412e2536363ec589d6592f1175135b759e13 -
Trigger Event:
push
-
Statement type: