Skip to main content

openbim-ifc (Python)

Read, edit and write IFC STEP files from Python. A thin binding over the openbim-ifc Rust crates: one abi3 wheel for CPython 3.9 and later.

pip install openbim-ifc

Documentation: Python guide · source and issues

from openbim_ifc import IfcModel, Text

with open("model.ifc", "rb") as f:
    model = IfcModel.parse(f.read())

print(model.schema, len(model))
for id in model.ids_of_type_including_subtypes("IfcWall"):
    print(id, model.attribute_by_name(id, "Name"))  # e.g. Text('Wall')

model.set_attribute_by_name(id, "Name", Text("Renamed"))
with open("out.ifc", "wb") as f:
    f.write(model.write())

Names resolve against the release the file's header declares, inherited attributes included; attribute_names(id) lists them in slot order with their optional and derived flags. attribute(id, index) and set_attribute(id, index, value) address a slot by position.

Values

Attribute values are frozen dataclasses, one per STEP form: Null ($), Derived (*), Bool, Unknown (.U.), Integer, Real, Text, Binary, Enum, Ref (#42), List, and Typed (IFCLENGTHMEASURE(2.5)). They keep every distinction IFC makes, so a file read and written back through Python is unchanged.

Bare Python values are refused with TypeError: 3 could be an Integer or a Real, "x" a Text or an Enum, and the binding does not guess.

Errors

Every failure raises IfcError with a stable code: parse, write, missing-entity, invalid-value, out-of-range, unsupported-schema, io, unsupported-profile or feature-disabled. The codes are shared with the JavaScript and C bindings; a code is never renamed or reused.

Threads

parse releases the GIL while it reads. A model can be passed between threads; the GIL serialises calls on it.

Scope

The record model -- entities, attributes, the STEP codec, exact and subtype queries -- plus lenient reads (ParseOptions), the STEP header, validation, ifcXML, the reachability lint and the read-only domain views (property sets and quantities, the spatial tree, classification, materials, systems, cost, georeferencing; #123), each as frozen dataclasses, and writing property sets and quantities as one checked transaction (set_properties). Geometry and checked multi-edit transactions over arbitrary entities are not bound yet.

Build from source

uv venv && . .venv/bin/activate
uv pip install maturin
maturin develop --release     # or: scripts/check-python.sh to build + test

Faster reading (opt-in)

maturin build --release --features rusty_alloc

Uses the pure-Rust rusty_alloc allocator for the extension's own memory: reading STEP into a model takes 18-35% less CPU time on seven real IFC files, at 1-7% less peak memory (#49). Python's own allocator is not replaced. Off by default because a global allocator is a build-time choice; the version is pinned exactly.

Metadata

Release files for openbim-ifc 0.3.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for openbim-ifc 0.3.1
File Size Uploaded
openbim_ifc-0.3.1.tar.gz 3.9 MB Details

Built distributions (wheels)

Table of built distributions (wheels) for openbim-ifc 0.3.1
File
openbim_ifc-0.3.1-cp39-abi3-win_amd64.whl CPython 3.9 abi3 Windows x86-64 Details
openbim_ifc-0.3.1-cp39-abi3-manylinux_2_28_x86_64.whl CPython 3.9 abi3 Linux glibc 2.28+ x86-64 Details
openbim_ifc-0.3.1-cp39-abi3-manylinux_2_28_aarch64.whl CPython 3.9 abi3 Linux glibc 2.28+ ARM64 Details
openbim_ifc-0.3.1-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.9 abi3 macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 Details

Total release size: 14.6 MB

Release files / openbim_ifc-0.3.1.tar.gz

Download URL openbim_ifc-0.3.1.tar.gz
Size 3.9 MB
Tags Source
SHA-256 checksum
How to use checksums
f4628a303f408cbff637404a0050c6c1f31d5504024650b5b752ec38d76bcb06
BLAKE2b-256 checksum
How to use checksums
a984446212a27dcfbf4b5a387d16b66700d12f56289f817100e7fe4dc701675e
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 Oct 4, 2026.

Transparency log

Release files / openbim_ifc-0.3.1-cp39-abi3-win_amd64.whl

Download URL openbim_ifc-0.3.1-cp39-abi3-win_amd64.whl
Size 2.2 MB
Tags CPython 3.9 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
0781891ab9926e45aea36afd402bc5855934d09d30da58fa04a81d93f80c8d84
BLAKE2b-256 checksum
How to use checksums
5179eff34aaa8d6eabecdf740637cc7c889d471e614a771d3bc4f5ece742187f
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 Oct 4, 2026.

Transparency log

Release files / openbim_ifc-0.3.1-cp39-abi3-manylinux_2_28_x86_64.whl

Download URL openbim_ifc-0.3.1-cp39-abi3-manylinux_2_28_x86_64.whl
Size 2.2 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64 abi3
SHA-256 checksum
How to use checksums
9412b0f6a824a250b1396735033ced36420e3f4ac77841170efe955c02c1858a
BLAKE2b-256 checksum
How to use checksums
63f0567db3b959d625a07042bda194b75565b36ac8d95bb8e0f786141832df7b
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 Oct 4, 2026.

Transparency log

Release files / openbim_ifc-0.3.1-cp39-abi3-manylinux_2_28_aarch64.whl

Download URL openbim_ifc-0.3.1-cp39-abi3-manylinux_2_28_aarch64.whl
Size 2.1 MB
Tags CPython 3.9 Linux glibc 2.28+ ARM64 abi3
SHA-256 checksum
How to use checksums
fee2b338518013a97ce9e769c26fecb216eff24317aa0a4a7514f0f9a8231d7f
BLAKE2b-256 checksum
How to use checksums
a782dc4606c185c7be89d1ef07ecca60c148a3651e5b425a01b27355802eb290
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 Oct 4, 2026.

Transparency log

Release files / openbim_ifc-0.3.1-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL openbim_ifc-0.3.1-cp39-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 4.2 MB
Tags CPython 3.9 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b39f0294e9d4b54b3107d5a5c2dd3115fabfc8f7979241ec6a5dca7ddf738db9
BLAKE2b-256 checksum
How to use checksums
10f2539fb0aa7ad4881d1ec70c926ae26c57887b7fcecfc00debcaf6c42d8b36
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 Oct 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.3.2

5 release files

This release

0.3.1 This release

5 release files

0.3.0

5 release files

0.2.1

5 release files

0.1.0

5 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