Skip to main content

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, click Tools > Update Symbols from Library..., then save
  • In pcbnew, click Tools > 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kicad_package_manager-0.0.18.tar.gz (11.5 kB view details)

Uploaded Source

Built Distribution

kicad_package_manager-0.0.18-py2.py3-none-any.whl (12.7 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file kicad_package_manager-0.0.18.tar.gz.

File metadata

File hashes

Hashes for kicad_package_manager-0.0.18.tar.gz
Algorithm Hash digest
SHA256 f489e6a605fb4e424237b2da167a4270db398c1195aae126a17bc953f2ae552e
MD5 e5b28d521f3282c2af7c71a48a8ddbe1
BLAKE2b-256 04542e3d471737967885b377a930a8b156bb0ce749c79ec231b932e985c34502

See more details on using hashes here.

File details

Details for the file kicad_package_manager-0.0.18-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for kicad_package_manager-0.0.18-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 912362deb2b0153620df72c3a67c1f0215b3121b79181746bdb71e41237ba7cb
MD5 4ca34dd23e09e2bdda16589c11cbff04
BLAKE2b-256 71f38491eadbead2f623c7f3140fe81772c9421bdf67fa1c0fd97d818d35af24

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page