rvt 0.4.0

Apache-2.0 clean-room reader for Autodesk Revit files (.rvt, .rfa, .rte, .rft) without Revit: metadata, previews and the embedded schema of 2016-2026 files, and typed elements with measured geometry from Revit 2024 and 2025 projects, exported as IFC4, glTF and plan SVG.
Documentation
[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"

[project]
name = "rvt"
description = "Apache-2 clean-room Python toolkit for inspecting Autodesk Revit files (.rvt/.rfa/.rte/.rft) without a Revit install. Metadata, schema introspection, and document-level IFC4 scaffolding across 11 Revit releases (2016-2026). Per-element extraction + geometry are active research."
authors = [{ name = "Griffin Long", email = "151978260+DrunkOnJava@users.noreply.github.com" }]
license = { text = "Apache-2.0" }
readme = "README.md"
requires-python = ">=3.8"
classifiers = [
    "Development Status :: 3 - Alpha",
    "License :: OSI Approved :: Apache Software License",
    "Programming Language :: Rust",
    "Programming Language :: Python :: Implementation :: CPython",
    "Topic :: Scientific/Engineering",
    "Topic :: File Formats",
]
keywords = ["revit", "bim", "autodesk", "ifc", "rfa"]
dynamic = ["version"]

[project.urls]
Repository = "https://github.com/DrunkOnJava/rvt-rs"
Documentation = "https://github.com/DrunkOnJava/rvt-rs/blob/main/README.md"
Issues = "https://github.com/DrunkOnJava/rvt-rs/issues"

[tool.maturin]
# SEC-12/13: pyo3 bindings live in the `rvt-py/` workspace member
# crate. The wheel is still called `rvt` on PyPI, but the Rust
# sources come from there.
manifest-path = "rvt-py/Cargo.toml"
# Version comes from `rvt-py/Cargo.toml`'s [package.version], kept
# in lock-step with the root crate.
# `module-name` is "rvt._rvt" so the compiled extension becomes a
# submodule of the pure-Python `rvt` package under `python/`. The
# package's `__init__.py` re-exports everything from `_rvt`, and
# `__init__.pyi` + `py.typed` give IDEs autocomplete.
module-name = "rvt._rvt"
python-source = "python"
# Pyo3's `abi3-py38` feature produces a single wheel compatible
# with every Python >= 3.8 (one wheel per OS/arch, not per Python
# minor version).