IFX core
One Rust IFC engine for native Python and browser WebAssembly. It reads IFC4 and IFC4X3 models. Geometry, properties, quantities, placements, units, materials, spatial data, and relationships come from this core.
import ifx_core
model = ifx_core.extract_ifc(open("building.ifc", "rb").read(), "high")
mesh = model["geometry"]["elements"][42]
properties = model["entities"]["entities"][42]["property_sets"]
spatial = model["model"]["spatial"]
extract_ifc uses the same Rust extraction function as WASM. It tessellates once. Python receives f64 vertex and u32 face buffers for NumPy. Separate model_data, model_data_json, entity_data, geometry_data_buffers, and geometry_data_json methods are available when only one part is needed.
Geometry and placements use absolute IFC world coordinates in metres, with Z up. The recorded RTC offset is already included. Do not add it again. Properties and quantities keep their source units. Use the reported unit scale for each dimension.
Layout
| Path | Purpose |
|---|---|
src/ |
IFX semantic extraction, unified entry point, Python and WASM bindings |
crates/step/ |
Local STEP parser |
crates/geometry/ |
Local geometry and CSG kernel |
crates/processing/ |
Local mesh pipeline |
crates/entities/ |
Local properties, quantities, attributes, and placements |
pkg/ |
Generated browser WASM module |
tests/ |
Core, geometry, and IfcOpenShell parity checks |
No external IFClite package is used. IFX includes an adapted source port. See ACKNOWLEDGEMENTS.md, UPSTREAM_SOURCE.json, and LICENSE. Keep the MPL terms, attribution, and matching source when you distribute a native or WASM build. Property extraction currently covers single-value properties; complex property forms are not yet supported by the imported reader.
Build and check
Python 3.10 or later and the pinned Rust toolchain are required.
uv sync --group dev --no-install-project
uv run --no-sync maturin develop --uv --release
.venv/bin/python -m pytest -m 'not corpus and not integration'
cargo test -p ifx-core
cargo clippy -p ifx-core --all-targets --all-features --no-deps -- -D warnings
./scripts/build-wasm.sh
The WASM build exports extractIfcJson(bytes, quality) and modelDataJson(bytes). The IFX TypeScript loader calls it in a Web Worker. The JSON boundary is the first implementation; large models can use more memory than the native buffer path.
Use maturin build --release --out dist for a native wheel, and maturin sdist --out dist for its matching source archive. The source archive includes the local crates and provenance file.
Metadata
Release files for ifx-core 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 | |
|---|---|---|---|---|
| ifx_core-0.1.0.tar.gz | 2.6 MB | Without provenance | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ifx_core-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl | CPython 3.10 | abi3 | Linux glibc 2.28+ x86-64 | Details |
| ifx_core-0.1.0-cp310-abi3-macosx_11_0_arm64.whl | CPython 3.10 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 7.1 MB
Release files / ifx_core-0.1.0.tar.gz
| Download URL | ifx_core-0.1.0.tar.gz |
|---|---|
| Size | 2.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
c0a76a7a1cccc7771ab28b1d80f9ffb3f12937b248db9069ec758d5176c93693
|
|
BLAKE2b-256 checksum How to use checksums |
532897887b534f7e97df68dd69efd133f475ccb5a299519d71d09baafb0a0532
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.14
|
Release files / ifx_core-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl
| Download URL | ifx_core-0.1.0-cp310-abi3-manylinux_2_28_x86_64.whl |
|---|---|
| Size | 2.4 MB |
| Tags | CPython 3.10 Linux glibc 2.28+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
a90dc38a6b898d465a8a6792ab1a5db3caec9824657621cc80afd951ce44957c
|
|
BLAKE2b-256 checksum How to use checksums |
0d20658d0fb7f9e0a23ab3a90e038a80bb73954a0113641e118759fd257a1f8c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.14
|
Release files / ifx_core-0.1.0-cp310-abi3-macosx_11_0_arm64.whl
| Download URL | ifx_core-0.1.0-cp310-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 2.2 MB |
| Tags | CPython 3.10 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
85ee623a56abafb05e47a090b42d912b2a2551080b1a8423bb411223cc0240b9
|
|
BLAKE2b-256 checksum How to use checksums |
1161f7e3c542b17bae2d4c6925288c2889c8388390a4dc7e9f03253303373369
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.14
|
Security for ifx-core 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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A 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.