Skip to main content

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:

  • component
  • design
  • designConfiguration
  • busDefinition
  • abstractionDefinition

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.
  • vendorExtensions is 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-compiler never opens a second file on its own. Resolving VLNV references across a library of files (for example, finding the Component that a Design's instance refers to) is left to the caller.
  • Input files are assumed to be valid. ipxact-compiler does 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.XMLSchema could 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, an AttributeError, 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)

Source distribution for ipxact-compiler 0.1.0
File Size Uploaded
ipxact_compiler-0.1.0.tar.gz 34.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ipxact-compiler 0.1.0
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

0.1.2

2 release files

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page