kicode-sch 10.99.0.dev20261031__py3-none-win_amd64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- kicode/_kicad/bin/_cvpcb.dll +0 -0
- kicode/_kicad/bin/_eeschema.dll +0 -0
- kicode/_kicad/bin/iconv-2.dll +0 -0
- kicode/_kicad/bin/msvcp140_1.dll +0 -0
- kicode/_kicad/bin/sqlite3.dll +0 -0
- kicode/_kicad/bin/wxmsw334u_webview_vc_x64_custom.dll +0 -0
- kicode_sch-10.99.0.dev20261031.dist-info/METADATA +209 -0
- kicode_sch-10.99.0.dev20261031.dist-info/RECORD +21 -0
- kicode_sch-10.99.0.dev20261031.dist-info/WHEEL +4 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/LICENSE +674 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/AUTHORS.txt +629 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE +674 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.3-CLAUSE-BSD +25 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.APACHE-2.0 +202 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.BOOSTv1_0 +23 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.CC-BY-SA-4.0 +255 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.CC0 +121 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.GPLv3 +674 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.ISC +10 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.MIT +17 -0
- kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.README +71 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: kicode-sch
|
|
3
|
+
Version: 10.99.0.dev20261031
|
|
4
|
+
Summary: kicode's schematic side: KiCad's schematic support for kicad-cli's sch and sym commands. Unofficial: not made, endorsed or supported by the KiCad project.
|
|
5
|
+
License-Expression: GPL-3.0-or-later
|
|
6
|
+
License-File: LICENSE
|
|
7
|
+
License-File: kicad/AUTHORS.txt
|
|
8
|
+
License-File: kicad/LICENSE
|
|
9
|
+
License-File: kicad/LICENSE.3-CLAUSE-BSD
|
|
10
|
+
License-File: kicad/LICENSE.APACHE-2.0
|
|
11
|
+
License-File: kicad/LICENSE.BOOSTv1_0
|
|
12
|
+
License-File: kicad/LICENSE.CC-BY-SA-4.0
|
|
13
|
+
License-File: kicad/LICENSE.CC0
|
|
14
|
+
License-File: kicad/LICENSE.GPLv3
|
|
15
|
+
License-File: kicad/LICENSE.ISC
|
|
16
|
+
License-File: kicad/LICENSE.MIT
|
|
17
|
+
License-File: kicad/LICENSE.README
|
|
18
|
+
Requires-Python: >=3.9
|
|
19
|
+
Requires-Dist: kicode-pcb==10.99.0.dev20261031
|
|
20
|
+
Classifier: Operating System :: MacOS
|
|
21
|
+
Classifier: Operating System :: Microsoft :: Windows
|
|
22
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
23
|
+
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
|
|
24
|
+
Project-URL: Source, https://github.com/earthtojake/kicode
|
|
25
|
+
Project-URL: KiCad source, https://gitlab.com/kicad/code/kicad/-/tree/113c71d59d19b2d92775118d8f38393227af6de4
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
|
|
28
|
+
# kicode
|
|
29
|
+
|
|
30
|
+
Unofficial: not made, endorsed or supported by the KiCad project.
|
|
31
|
+
|
|
32
|
+
> This is **kicode-sch** 10.99.0.dev20261031, kicode's schematic side: the 6 files of KiCad 10.99.0 at commit `113c71d59d` that only its schematic kifaces need, installed into kicode-pcb's folder.
|
|
33
|
+
|
|
34
|
+
kicode puts [KiCad](https://www.kicad.org)'s command line, `kicad-cli`, and KiCad's client for its IPC API,
|
|
35
|
+
KiPy, in one Python package, `kicode`. One install gives an environment a headless `kicad-cli` and the
|
|
36
|
+
client that drives its API server, with nothing else of KiCad's installed and nothing of the person's own
|
|
37
|
+
KiCad settings touched. It exists for [text-to-cad](https://github.com/earthtojake/text-to-cad), whose
|
|
38
|
+
`cad[kicad]` pins one build of it, and works for anything that runs KiCad from Python.
|
|
39
|
+
|
|
40
|
+
## Unofficial build
|
|
41
|
+
|
|
42
|
+
kicode repackages KiCad's own software. It is not KiCad's: the KiCad project did not make it and does not
|
|
43
|
+
support it.
|
|
44
|
+
|
|
45
|
+
- `kicad-cli` is KiCad's own, unmodified. On macOS and Windows kicode carries KiCad's own files from its
|
|
46
|
+
published nightly build of a commit: `kicad-cli` and what it loads (on macOS the arm64 half of each file,
|
|
47
|
+
KiCad's signatures intact). On Linux it is built from KiCad's source at the same commit, stamped with the
|
|
48
|
+
version KiCad's own builds of that commit report.
|
|
49
|
+
- KiPy ([kicad-python](https://gitlab.com/kicad/code/kicad-python)) is KiCad's as it publishes it, with its
|
|
50
|
+
modules renamed from `kipy` to `kicode` and nothing else changed.
|
|
51
|
+
- Report problems with kicode at [earthtojake/kicode's issues](https://github.com/earthtojake/kicode/issues),
|
|
52
|
+
not to the KiCad project.
|
|
53
|
+
- KiCad is a trademark of its owners. kicode uses no KiCad logo, and its name implies no endorsement.
|
|
54
|
+
|
|
55
|
+
## Packages
|
|
56
|
+
|
|
57
|
+
kicode is three distributions, published together under one version. Whichever you install, the Python
|
|
58
|
+
package is `kicode`.
|
|
59
|
+
|
|
60
|
+
| Distribution | What it is | Wheels (sizes of 10.99.0.dev20261031) |
|
|
61
|
+
| --- | --- | --- |
|
|
62
|
+
| `kicode` | What to install: no files of its own; it requires `kicode-pcb` and `kicode-sch` of the same version. | one, `py3-none-any` (17 kB) |
|
|
63
|
+
| `kicode-pcb` | The board side and the `kicode` package: `kicad-cli`, pcbnew's kiface (every `kicad-cli pcb` and `fp` command, and the API server), the 3D model plugins, every library they link, and KiPy. | macOS arm64 76.2 MB, Windows x86_64 54.8 MB, Linux x86_64 84.9 MB |
|
|
64
|
+
| `kicode-sch` | The schematic side: the eeschema and cvpcb kifaces (every `kicad-cli sch` and `sym` command) and the libraries only they link, installed into kicode-pcb's folder. It requires `kicode-pcb` of the same version. | macOS arm64 26.2 MB, Windows x86_64 18.1 MB, Linux x86_64 24.6 MB |
|
|
65
|
+
|
|
66
|
+
| Platform | kicad-cli from | Minimum OS | Wheel tag |
|
|
67
|
+
| --- | --- | --- | --- |
|
|
68
|
+
| macOS arm64 | KiCad's nightly DMG: `kicad-cli`, its kifaces, 3D plugins and the libraries they link | macOS 14 | `macosx_14_0_arm64` |
|
|
69
|
+
| Windows x86_64 | KiCad's nightly installer: `kicad-cli.exe`, its kifaces, 3D plugins and every DLL of the installer they import | Windows 10 | `win_amd64` |
|
|
70
|
+
| Linux x86_64 | A build of the same commit on Debian 12, every library it links bundled but glibc's | glibc 2.36 (Debian 12, Ubuntu 22.10 and later, RHEL 10) | `manylinux_2_36_x86_64` |
|
|
71
|
+
|
|
72
|
+
Every platform wheel of a version is built from one KiCad commit and one KiPy commit, and every wheel is
|
|
73
|
+
under 100 MB, PyPI's limit: the build refuses a bigger one.
|
|
74
|
+
|
|
75
|
+
## Install
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
pip install "kicode==10.99.0.dev20261031" # kicode-pcb and kicode-sch
|
|
79
|
+
pip install "kicode-pcb==10.99.0.dev20261031" # the board side alone
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
From PyPI once a version is promoted there; before that, or for any other nightly, from its GitHub release:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
uv pip install "kicode==10.99.0.dev20261031" \
|
|
86
|
+
--find-links https://github.com/earthtojake/kicode/releases/expanded_assets/v10.99.0.dev20261031
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
## Python API
|
|
90
|
+
|
|
91
|
+
kicode's own names:
|
|
92
|
+
|
|
93
|
+
- `kicode.executable()`: the packaged `kicad-cli` (`kicad-cli.exe` on Windows).
|
|
94
|
+
- `kicode.environment(root)`: the variables a headless run sets, every KiCad home inside `root` (below).
|
|
95
|
+
- `kicode.has_schematic()`: whether kicode-sch is installed.
|
|
96
|
+
- `kicode.stock_data_home()`: the stock data folder a Linux build reads (None elsewhere).
|
|
97
|
+
- `kicode.KICAD_VERSION`, `KICAD_COMMIT`, `KIPY_VERSION`, `KIPY_COMMIT`: what the wheels were built from.
|
|
98
|
+
|
|
99
|
+
Beside them, KiPy's API under the same names, with `kicode` in place of `kipy`: `from kicode import KiCad`,
|
|
100
|
+
`from kicode.board_types import Track`, `kicode.proto.board.board_types_pb2`.
|
|
101
|
+
|
|
102
|
+
```python
|
|
103
|
+
import os, subprocess, time, kicode
|
|
104
|
+
|
|
105
|
+
env = {**os.environ, **kicode.environment("/tmp/run")} # the run's own KiCad homes
|
|
106
|
+
subprocess.run([kicode.executable(), "pcb", "export", "step", "-o", "board.step", "board.kicad_pcb"],
|
|
107
|
+
env=env, check=True)
|
|
108
|
+
|
|
109
|
+
# The IPC API, served headless by kicad-cli and driven with KiPy. Keep the socket's path short: a Unix
|
|
110
|
+
# socket's path is limited to about 100 bytes.
|
|
111
|
+
server = subprocess.Popen([kicode.executable(), "api-server", "--socket", "/tmp/run/api.sock",
|
|
112
|
+
"board.kicad_pcb"], env=env)
|
|
113
|
+
kicad = kicode.KiCad(socket_path="ipc:///tmp/run/api.sock", timeout_ms=10000)
|
|
114
|
+
for _ in range(200): # until the server listens and has loaded the board
|
|
115
|
+
try:
|
|
116
|
+
board = kicad.get_board()
|
|
117
|
+
break
|
|
118
|
+
except Exception:
|
|
119
|
+
time.sleep(0.05)
|
|
120
|
+
else:
|
|
121
|
+
raise RuntimeError("kicad-cli api-server did not answer")
|
|
122
|
+
print(len(board.get_pads()), "pads")
|
|
123
|
+
server.terminate()
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
`python -m kicode` prints the executable's path, and `python -m kicode <arguments>` runs it headless in a
|
|
127
|
+
temporary root. With kicode-pcb alone, `kicad-cli sch …` stops with KiCad's own
|
|
128
|
+
`Failed to load kiface library '…/_eeschema.kiface'`, and `python -m kicode sch …` says to install
|
|
129
|
+
kicode-sch.
|
|
130
|
+
|
|
131
|
+
`environment(root)` sets `HOME` (and `USERPROFILE`) and `TMPDIR` (`TEMP` and `TMP` on Windows);
|
|
132
|
+
`KICAD_CONFIG_HOME`, `KICAD_DOCUMENTS_HOME` and `KICAD_CACHE_HOME`, without which KiCad reads and writes the
|
|
133
|
+
person's own; and on Linux `KICAD_STOCK_DATA_HOME` and `APPDIR` (KiCad's AppImage variable), by which the
|
|
134
|
+
build finds its stock data, kifaces and 3D plugins inside the wheel. Merge them over the environment a run
|
|
135
|
+
is given.
|
|
136
|
+
|
|
137
|
+
Headless, the API serves every read, commit, edit, zone fill, design rule, netlist import, library
|
|
138
|
+
placement and export, but no editor state (selection, active and visible layers, appearance, interactive
|
|
139
|
+
moves, `run_action`). KiPy's own `KiCad(headless=True)` starts whichever `kicad-cli` it finds installed (on
|
|
140
|
+
macOS the one in `/Applications` first) in the person's own KiCad settings: start `kicode.executable()`
|
|
141
|
+
with `kicode.environment(root)` instead, as above.
|
|
142
|
+
|
|
143
|
+
## Left out
|
|
144
|
+
|
|
145
|
+
- KiCad's GUI: no `kicad`, `pcbnew` or `eeschema` programs.
|
|
146
|
+
- KiCad's symbol, footprint and 3D model libraries (over 3 GB). Point `KICAD10_FOOTPRINT_DIR`,
|
|
147
|
+
`KICAD10_SYMBOL_DIR` and `KICAD10_3DMODEL_DIR` at a copy, with library tables in `KICAD_CONFIG_HOME`,
|
|
148
|
+
when a run needs them.
|
|
149
|
+
- GerbView's, the PCB calculator's and the drawing sheet editor's kifaces, so `kicad-cli gerber` is not
|
|
150
|
+
available.
|
|
151
|
+
- ngspice, which KiCad loads only to simulate, on Windows and Linux. macOS's eeschema links it, so there
|
|
152
|
+
kicode-sch carries it.
|
|
153
|
+
- On Linux, a browser engine for wxWidgets' web view: KiCad's Linux build needs wxWidgets 3.3, built from
|
|
154
|
+
its release tarball, and on GTK the only engine is WebKitGTK, which would add some 65 MB for pages only
|
|
155
|
+
KiCad's GUI shows.
|
|
156
|
+
- KiPy's `kicad-python-packager` command; `python -m kicode.packaging` runs it.
|
|
157
|
+
|
|
158
|
+
## kicode and upstream kipy
|
|
159
|
+
|
|
160
|
+
Upstream `kipy` and `kicode` cannot be imported in one process. Both register the same protobuf files
|
|
161
|
+
(`board/board_types.proto`, …) in protobuf's one default pool, and whichever imports second fails with
|
|
162
|
+
`Couldn't build proto file into descriptor pool: duplicate file name` unless both were built from the same
|
|
163
|
+
KiPy commit. Install one or the other.
|
|
164
|
+
|
|
165
|
+
## Versions and where they are published
|
|
166
|
+
|
|
167
|
+
- A version is KiCad's: a nightly is `X.99.0.devYYYYMMDD`, the date of KiCad's macOS nightly of the
|
|
168
|
+
commit. kicode, kicode-pcb and kicode-sch of one build share it.
|
|
169
|
+
- GitHub releases: every day the newest KiCad nightly that builds and passes on every platform is
|
|
170
|
+
published as a prerelease of [earthtojake/kicode](https://github.com/earthtojake/kicode/releases) (tag
|
|
171
|
+
`v10.99.0.dev20261031`) with all seven wheels and their sources. Its page is a find-links index (Install,
|
|
172
|
+
above).
|
|
173
|
+
- PyPI: only versions promoted there, because a text-to-cad release pins them. The wheels are the GitHub
|
|
174
|
+
release's, unchanged.
|
|
175
|
+
|
|
176
|
+
## Release flow
|
|
177
|
+
|
|
178
|
+
- `.github/workflows/build.yml` builds each platform's wheels and smoke-tests them where they run:
|
|
179
|
+
kicode-pcb alone, then kicode, and the Linux wheels also in bare Debian, Ubuntu and Fedora roots. Once
|
|
180
|
+
every platform passes, the release is made a draft with every asset, each asset is checked against the
|
|
181
|
+
file it came from, and only then is the release published. Releases are immutable once published, so a
|
|
182
|
+
failure leaves a draft (the next attempt replaces it), never a release that lacks a file.
|
|
183
|
+
- Promotion to PyPI is a dispatch of the workflow with `pypi`, never the daily schedule. It uploads the
|
|
184
|
+
release's wheels, one distribution per job, each through its own GitHub environment and PyPI trusted
|
|
185
|
+
publisher (owner `earthtojake`, repository `kicode`, workflow `build.yml`; each environment needs
|
|
186
|
+
earthtojake's review and deploys from `main` only), in this order, so that PyPI never lists a kicode
|
|
187
|
+
whose parts it lacks:
|
|
188
|
+
|
|
189
|
+
| Order | PyPI project | GitHub environment | Wheels |
|
|
190
|
+
| --- | --- | --- | --- |
|
|
191
|
+
| 1 | `kicode-pcb` | `pypi-pcb` | one per platform |
|
|
192
|
+
| 2 | `kicode-sch` | `pypi-sch` | one per platform |
|
|
193
|
+
| 3 | `kicode` | `pypi` | one, `py3-none-any` |
|
|
194
|
+
|
|
195
|
+
The workflow's scripts run locally too: `scripts/resolve_nightly.py` finds a nightly on every platform;
|
|
196
|
+
`scripts/stage_macos.sh`, `scripts/stage_windows.py` and `scripts/build_linux.sh` stage a platform's
|
|
197
|
+
`kicode/_kicad/` tree and `schematic/files.txt` (what only the schematic kifaces need);
|
|
198
|
+
`scripts/vendor_kipy.py` puts KiPy's modules in `kicode/`; `scripts/kicad_licenses.py` fetches KiCad's
|
|
199
|
+
notices; `scripts/make_wheel.py` writes the wheels; and `tests/smoke.py` runs in the environment they are
|
|
200
|
+
installed into.
|
|
201
|
+
|
|
202
|
+
## License
|
|
203
|
+
|
|
204
|
+
kicode (this repository and its three distributions) is GPL-3.0-or-later, as KiCad is. KiPy is MIT, and
|
|
205
|
+
its licence ships in kicode-pcb's wheel. Each platform wheel also ships KiCad's notices from its commit,
|
|
206
|
+
and on Linux the copyright file of every library it bundles and wxWidgets' licence. Every GitHub release
|
|
207
|
+
attaches the corresponding source: KiCad's at the commit, and for the Linux wheels the Debian source
|
|
208
|
+
package of every library they bundle and wxWidgets' release tarball. The wheels on PyPI are the same files
|
|
209
|
+
as the GitHub release of their version, whose source is attached there.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/LICENSE,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
|
|
2
|
+
kicode/_kicad/bin/_cvpcb.dll,sha256=IC1qmqEDpmaUBJMql_gFq5j3gIUHlbxA7wxpyYzsT_k,13700448
|
|
3
|
+
kicode/_kicad/bin/_eeschema.dll,sha256=PGypiWhddg5Qdl81qx-YF0YJbM6qsJ5QRAxG_TycDBU,26775392
|
|
4
|
+
kicode/_kicad/bin/iconv-2.dll,sha256=QBW903ZAm2mxM-_aW75Nw_eWrNUf7v6ahejV5eN8vzE,1105248
|
|
5
|
+
kicode/_kicad/bin/msvcp140_1.dll,sha256=v61a70xjpmnjwUBlXN_fOVtsl5tACkR71dy2XtiCbD0,35952
|
|
6
|
+
kicode/_kicad/bin/sqlite3.dll,sha256=sZOC9_3reozRYiQ3phC1Vs6-j7FLmD6Q8ix6NePSYv0,1750880
|
|
7
|
+
kicode/_kicad/bin/wxmsw334u_webview_vc_x64_custom.dll,sha256=l7Z_Z3CcCcj1F1IgS-S_aEOqXsUh-MhMdD93d51-98g,343392
|
|
8
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/AUTHORS.txt,sha256=EV0cR70Q3oNotJklUVmVz5Nu6tBTu9atRkwfX8IOvC8,10065
|
|
9
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
10
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.3-CLAUSE-BSD,sha256=EoVsMvzqNs7cEw5-jlK5cgRcTRPWkc9Ew9Ze2CX-1Ns,1431
|
|
11
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.APACHE-2.0,sha256=z8d0m5b2O9McPEK1xHG_dWgUBT6EfBDz6wA0F7xSPTA,11358
|
|
12
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.BOOSTv1_0,sha256=yb_3VziSIZPmf6cm-iJVNYcNKqEFn5FFLEEXNihK1WY,1338
|
|
13
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.CC-BY-SA-4.0,sha256=ALoRuaItRTrtKZlU6so4nY7-9EGkZz2E4txK4Q68fKU,15164
|
|
14
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.CC0,sha256=ogEPNDSH0_dhiv_lT3ifVIdgIzHAqNA_SemnxUfPBJk,7048
|
|
15
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.GPLv3,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
16
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.ISC,sha256=yIpB74X3UFqO4lZpoWoOgnSg4wUeIWuKa_8HCxx_JQw,703
|
|
17
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.MIT,sha256=IaISEiHSo13y2NMz0Aph7SQERrYQcJJ0H_mWlBrNyRk,1022
|
|
18
|
+
kicode_sch-10.99.0.dev20261031.dist-info/licenses/kicad/LICENSE.README,sha256=Be1603mGnDahKnw3Asw35iDXXIUylDzpz1d7mwSn8nA,2873
|
|
19
|
+
kicode_sch-10.99.0.dev20261031.dist-info/METADATA,sha256=EnS_zj5TeOlXv4ZLr0CBq84a7VFMOtgL35hJa-IwgdU,12069
|
|
20
|
+
kicode_sch-10.99.0.dev20261031.dist-info/WHEEL,sha256=Nm8d2-sELgHDG7AAZ3B-KORapGHuoQT7CHvNEMa2dA4,95
|
|
21
|
+
kicode_sch-10.99.0.dev20261031.dist-info/RECORD,,
|