ipxact-compiler
A Python library that parses IEEE 1685-2022 IP-XACT XML documents into a Python object model.
It is a standalone, general-purpose parsing library, not tied to any specific downstream tool or
flow. ipxact-compiler reads IP-XACT and hands you back Python objects; it does not resolve
cross-file references, elaborate a design, validate semantic consistency, or generate any output.
That is the job of tools built on top of it.
What it supports
Five IP-XACT top-level document types are supported for now:
componentdesigndesignConfigurationbusDefinitionabstractionDefinition
The object model aims for full fidelity with the IEEE 1685-2022 XSD schema for these document types: every element and attribute the schema defines is represented.
A few things are intentionally represented in a simplified form rather than being modeled in full depth:
- Expressions are raw strings. Fields typed as an IP-XACT
expression(parameter values, array bounds, and similar) are kept as unevaluated strings, not parsed or evaluated as arithmetic. vendorExtensionsis opaque. It is parsed generically, not modeled per-vendor.
Installation
pip install ipxact-compiler
Or, for local development:
git clone <this repo>
cd ipxact-compiler
pip install -e ".[dev]"
Requires Python >= 3.9. The only runtime dependency is lxml.
Usage
import ipxact
component = ipxact.parse_file("path/to/some_component.xml")
component.vlnv # VLNV
component.bus_interfaces # list[BusInterface]
component.memory_maps # list[MemoryMap]
component.model # Model | None
ipxact.parse_file(path) reads a file, figures out its document type from the root element, and
returns the matching dataclass (Component, Design, DesignConfiguration, BusDefinition, or
AbstractionDefinition).
Every schema class (Component, VLNV, BusInterface, Register, Field, and so on) is
re-exported at the top level, so ipxact.<ClassName> works without reaching into submodules.
Design principles
- Single-file parsing only.
ipxact-compilernever opens a second file on its own. Resolving VLNV references across a library of files (for example, finding theComponentthat aDesign's instance refers to) is left to the caller. - Input files are assumed to be valid.
ipxact-compilerdoes not perform validation; it assumes the IP-XACT documents you give it are already well-formed and conform to the standard. This is why the parser currently favors defaulting over raising on missing or malformed data. This may change (see "Known limitations"). - Hand-written, not XSD auto-generated. The object model is a set of hand-written Python dataclasses following the schema but not automatically generated from the XSD. This keeps the API stable, at the cost of needing to keep it manually in sync with the standard.
Known limitations / ideas for later
These are open items, not commitments. None of them are currently planned to start imminently.
- No XSD schema validation. Malformed IP-XACT (missing required elements, wrong types, invalid
structure) is not rejected at parse time; the parser will generally just default missing fields
rather than erroring. A validation path using the bundled IEEE 1685-2022 XSDs and
lxml.etree.XMLSchemacould be considered, but it means packaging the full IEEE 1685-2022 XSD schema with this repository, for a benefit that only matters if you're feeding it genuinely invalid files. - No deliberate error-handling philosophy yet. Right now, malformed input either silently
produces a default value or raises whatever low-level Python exception happens to occur (a
ValueError, anAttributeError, etc.) rather than a clear, intentional error type. Deciding on and implementing a consistent policy (raise vs. warn vs. silently default, and what exception types/messages to use) is still open. - No Semantic Consistency Rule (SCR) checking, per IEEE 1685-2022 Annex B. These are the
standard's own rules for validity that XSD alone can't express (VLNV resolution correctness,
bus/abstraction interface compatibility, and so on). Each rule is tagged with two independent
flags: whether it is checkable on a single document alone, and whether it applies
post-configuration (after linking). In our case, only the subset that is single-document-checkable
and not post-config could live in
ipxact-compiler. - No dedicated documentation yet. This README covers the basics, but a proper documentation site (full API reference, more usage examples) is planned for the future.
License
LGPL-3.0. See LICENSE.
Release files for ipxact-compiler 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 | |
|---|---|---|---|
| ipxact_compiler-0.1.0.tar.gz | 34.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ipxact_compiler-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 76.4 kB
Release files / ipxact_compiler-0.1.0.tar.gz
| Download URL | ipxact_compiler-0.1.0.tar.gz |
|---|---|
| Size | 34.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
acb82d0a0751fde2e2e7c78919001c58ff89689e59469bcab5dc4d2c4c550cc4
|
|
BLAKE2b-256 checksum How to use checksums |
3fc5badea505d864dffe7ce83e33dd034194f77613ab9e0cac296b73c84b8e6f
|
| 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 2, 2026.
Transparency logRelease files / ipxact_compiler-0.1.0-py3-none-any.whl
| Download URL | ipxact_compiler-0.1.0-py3-none-any.whl |
|---|---|
| Size | 41.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4569ae9d4059334fe49288bb9d4e7a49600181cee4460a6e3188a354e22fc289
|
|
BLAKE2b-256 checksum How to use checksums |
835381b692d433006fc423dbf1e989d94e07ad36d01b8a0f6cea918ba56ee300
|
| 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 2, 2026.
Transparency log