icadkit
A Rust-based Python reader for iCAD SX .icd files. Inspect file headers,
list embedded Parasolid resources, extract validated X_B payloads, and read
resource-level geometry and boundary representations (B-Rep).
icadkit is experimental. It preserves source coordinates and unknown content; it does not reconstruct complete iCAD models, assembly placement or drawings. See supported capabilities and limits before choosing it for your files.
Installation
Python 3.10–3.14 with the standard GIL is supported. Wheel targets are Linux x86_64 (glibc 2.28+), Windows x86_64 and macOS ARM64 (11+). Install a wheel matching your platform:
python -m pip install /path/to/icadkit-0.1.0-cp310-abi3-PLATFORM.whl
Replace the path with the actual wheel filename. Version 0.1.0 is not yet published on PyPI. To install from a source checkout or source distribution, install Rust 1.88+ and a C linker, then run this in the source directory:
python -m pip install .
The native extension bundles parasolid-core and has no Python runtime
dependencies. iCAD, Wine and an external SDK are not required. Files needing
a schema absent from the built-in profiles require an explicitly supplied
compatible schema catalog.
Quick start
import icadkit
info = icadkit.inspect("model.icd")
print(info.header.byte_order, info.header.name_cp932_candidate)
doc = icadkit.read("model.icd")
for resource in doc.resources:
print(resource.resource_id, resource.encoding)
extracted = doc.extract(resource.resource_id)
print(len(extracted.payload), extracted.source.payload_sha256)
geometry = doc.read_geometry(resource.resource_id)
print(geometry.status, geometry.diagnostics)
if geometry.brep is not None:
print(geometry.brep.counts)
geometry.require_complete("brep") # Raises if this scope is incomplete.
inspect() reads only the leading structure. read() owns the input and indexes
resources; decompression and geometry parsing happen on request. A successful
extraction or B-Rep applies to that resource and scope only. An empty resource
list does not establish that a file contains no geometry.
Paths can be strings or Path objects. Passing bytes means file contents,
not a filename. Structured format errors derive from icadkit.IcadError; file
access errors use OSError. See the Python API and CLI reference
for limits, diagnostics, schema selection and pagination.
Command line
icadkit --version
icadkit info --json
icadkit inspect model.icd --json
icadkit resources model.icd --json
icadkit extract model.icd RESOURCE_ID --output body.x_b --json
icadkit check model.icd --target geometry --resource RESOURCE_ID --json
Use an ID returned by resources in place of RESOURCE_ID. Extraction creates a
new file and refuses to overwrite an existing file. python -m icadkit provides
the same commands. JSON output includes a schema version, scope status and
diagnostics; exit codes are documented in the reference.
License
icadkit is offered under PolyForm Noncommercial 1.0.0. Commercial licenses are available from UnRobotics Inc.. Dependencies retain their own licenses and copyright notices. Read the licensing guide, license notice and third-party notices for details.
Metadata
Release files for icadkit 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| icadkit-0.1.0.tar.gz | 155.8 kB | With provenance | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| icadkit-0.1.0-cp310-abi3-win_amd64.whl | CPython 3.10 | abi3 | Windows x86-64 | Details |
| icadkit-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| icadkit-0.1.0-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 2.1 MB
Release files / icadkit-0.1.0.tar.gz
| Download URL | icadkit-0.1.0.tar.gz |
|---|---|
| Size | 155.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
d341dae07a430a0be7d6c2b277091308319f9ce143d1e6fbf9f03961d9568391
|
|
BLAKE2b-256 checksum How to use checksums |
dcc1fa51a22ec0c4fa92413c274e500d8b3ee50be351f6d70fdec6e7ac7e2a29
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / icadkit-0.1.0-cp310-abi3-win_amd64.whl
| Download URL | icadkit-0.1.0-cp310-abi3-win_amd64.whl |
|---|---|
| Size | 572.2 kB |
| Tags | CPython 3.10 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
41ee611e95de737aa3652b16c8a15e2eb350f04af1b0f9549758fc1d856e8828
|
|
BLAKE2b-256 checksum How to use checksums |
5c5349ee34c25712810eefd148952b64554f59e69b7d4b3d059b7d1aa6eaa96e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / icadkit-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl
| Download URL | icadkit-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 740.6 kB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
69a4f031c9247e6dfef32feb77dec054a056a0af2dcd6d659276e648f1385367
|
|
BLAKE2b-256 checksum How to use checksums |
fe3c0f4c22a6615f76fe394da3dbcecbce0b0c9fa0564a694b17068b0c388a89
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logRelease files / icadkit-0.1.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | icadkit-0.1.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 665.4 kB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
4ce0ebf5bc66fb976a87a5c1e94e44bfb7aaf96b5b8468313458284397c65a77
|
|
BLAKE2b-256 checksum How to use checksums |
5e6bb7a28d063819cbceddbb8d50e10168e6765c58e1875a1273c1a85b8c983b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logSecurity for icadkit 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 4 files in this release have been uploaded with provenance metadata.
Attestation for icadkit-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 21, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.