A package manager for KiCad projects
Project description
KiCad Package Manager
This is a package manager for KiCad symbols, footprints, 3d models, simulation files, and hierarchical sheets.
Goal
Create a format for distributing the following kind of KiCad features:
- Symbols
- Footprints
- 3D Models
- SPICE Simulation Code
- Sub-sheets
- Unit Tests
- Command Runner
- Plugins
Projects can be created that programmatically generate these files.
Currently Supports:
- Symbols
- Footprints
Up Next:
- Subsheets
- Command Runner
- 3D Models
Installing KPM
Open the "KiCad Command Prompt"
pip3 install kicad-package-manager
In your KiCad project directory, run
kpm init
Then edit your kpm.json
file as needed.
How to Install a Package
Find a package you want to use:
kpm list
kpm list | grep something
kpm search something
kpm show some_package
Then edit the dependencies
list in your kpm.json
to include a package and version. Example:
{
"name": "cool-project",
"version": "0.0.1",
"author": "danroblewis",
"homepage": "http://githab.info/magic/stuff",
"commands": {
"test": "./fictional-spice-tester"
},
"dependencies": {
"kpm-jlcpcb-basic": "0.0.5",
"eurorack-parts": "0.0.1"
}
}
How to Create a Package
Create a directory, it can be a KiCad project directory or any directory. Probably put it under version control with something like git.
kpm init
This creates a kpm.json
file. Add the dependencies your package will require to the dependencies
list.
Your package will include your kpm.json
file and any of these directories if they are present:
/symbols
/footprints
/commands
/3dmodels
/plugins
/simulation
/subsheets
/tests
/commands
To build the package
kpm build
You should now have a package.zip
file in your project directory.
To upload a package to the registry, first create a ~/.kpmrc
file:
{
"name": "yourname",
"token": "arbitrarytokenonlyyouknow"
}
Then update the version in your kpm.json
file.
Then run
kpm upload
You should then see your package in the kpm search <yourpackagename>
Writing Commands
A command is ran with kpm run <commandname> <arguments>
.
If you'd like to create a package that adds a new command to kpm
, create a file commands/__init__.py
:
def register(subparsers):
print("registering mycommand")
parser = subparsers.add_parser('mycommand')
parser.add_argument('thing')
parser.add_argument('--feature', '-f', action="store_true", required=False)
def run_command(args):
if args.command == 'mycommand':
print(args.thing)
print(args.feature)
Usage
kpm init
kpm list
kpm search jlc
kpm show kpm-jlcpcb-basic
kpm install .
To add a new package to the package index, submit a pull request
kpm.json
{
"name": "cool-project",
"version": "0.0.1",
"author": "danroblewis",
"homepage": "http://githab.info/magic/stuff",
"commands": {
"test": "./fictional-spice-tester"
},
"dependencies": {
"kpm-jlcpcb-basic": "0.0.5",
"eurorack-parts": "0.0.1"
}
}
Refresh Symbols and Footprints
After updating your libraries, the symbols/footprints in your schematic files won't have the latest changes. Do this to synchronize them:
- In
eeschema
, clickTools > Update Symbols from Library...
, then save - In
pcbnew
, clickTools > Update Footprints from Library...
, then save
(If we can find a way to do this within kpm, that would be awesome.)
Package Directory Structure
/kpm.json
/symbols/
/symbols/mysymbols.kicad_sym
/footprints/
/footprints/myfootprints.pretty/
/footprints/myfootprints.pretty/myfootprints.kicad_mod
/3dmodels/
/3dmodels/something.step
/plugins/
/plugins/kicad-eurorack-tools/
/plugins/kicad-eurorack-tools/__init__.py
/simulation/
/simulation/mysim.spice
/sheets/
/sheets/mysubsheet.kicad_sch
/tests/
/tests/mytest.py
/scripts/
/scripts/mycommand.py
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 Distributions
Built Distribution
File details
Details for the file kicad_package_manager-0.0.22-py2.py3-none-any.whl
.
File metadata
- Download URL: kicad_package_manager-0.0.22-py2.py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 212e98e130a1bd3c92fceae36f2e9a35cba9d53a6ebe9370408b0b1703cf97b3 |
|
MD5 | 6391f9322f20f69cb23e0bf929f354d8 |
|
BLAKE2b-256 | cc6d365d99a9a8cd04870d2a9dfa26db067b003fa26d20a595eba708a79cda02 |