pyrucast
A finite element library in Rust, inspired by cast3m, exposed to Python — and
usable as is in pure Rust (pyo3 is an optional dependency: a default build
pulls in neither pyo3 nor libpython).
- Full documentation: the mdbook in
book/(architecture, memory model, meshing, fields, physics…) —mdbook build bookfor the HTML. - Rust API reference:
cargo doc --no-deps --lib --open.
Prerequisites
| Tool | Version | Installation |
|---|---|---|
| Rust | ≥ 1.89 (the crate's rust-version), edition 2024 |
rustup |
| Python | ≥ 3.11 | Python API only — not needed in pure Rust |
| Python headers | — | Python API only — Linux: python3-dev (Debian/Ubuntu) or python3-devel (Fedora/RHEL). Windows: included in the official installer. |
Use in pure Rust (without Python)
[dependencies]
pyrucast = { git = "…", default-features = false } # no pyo3, no libpython
use pyrucast::atoms::ElementType;
let mesh = pyrucast::ops::mesh::triangulate_surface(&contour, ElementType::TRI3, Some(1.0))?;
cargo build / cargo test (without any feature) compile the core in pure Rust
— neither Python nor a venv required. The Python API (#[pyclass]) lives behind
the python-api feature, enabled automatically by maturin.
Building in a venv (Python API)
For builds with the Python API (maturin, or cargo --features python-api), pyo3 locates the interpreter through VIRTUAL_ENV: always
activate the venv before cargo or maturin, otherwise the build fails with
error: failed to run the Python interpreter at .... (A plain cargo build does
not have this constraint.)
Linux / macOS
python3 -m venv .venv
source .venv/bin/activate
pip install --upgrade pip maturin
maturin develop --release
Windows (PowerShell)
python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install --upgrade pip maturin
maturin develop --release
maturin develop compiles the module and installs it into the venv. Check:
python -c "import pyrucast; c = pyrucast.Coords(2); print(c)"
After any change to the Rust, simply re-run maturin develop --release.
Development
pip install pytest ruff # on top of maturin, in the venv
cargo build # pure Rust core (without pyo3; no venv needed)
cargo test # unit + integration tests + doctests (pure Rust)
maturin develop && python -m pytest # Python tests
cargo fmt && ruff format . # standard formatting (Rust + Python)
bash script/check_all.sh # chains all the checks (formatting included)
bash script/check_doc.sh # or a single block: format / rust / python / examples / doc
The book's chapter Building and testing details the
Cargo features (viz, viz-interactive, stub-gen…), the generation of the
python/pyrucast/_pyrucast/__init__.pyi stub and the common troubleshooting.
License
Distributed under the Mozilla Public License 2.0 (MPL-2.0).
It is a per-file copyleft: any modification of a pyrucast source file must be republished under the MPL, but one can freely build proprietary code on top of the library and combine it with it. The MPL is moreover GPL/CeCILL compatible ("Secondary Licenses", §3.3).
Release files for pyrucast 0.9.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyrucast-0.9.1.tar.gz | 1.5 MB | Details |
Built distributions (wheels)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyrucast-0.9.1-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details |
| pyrucast-0.9.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| pyrucast-0.9.1-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl | CPython 3.11 | abi3 | macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64 | Details |
Total release size: 20.5 MB
Release files / pyrucast-0.9.1.tar.gz
| Download URL | pyrucast-0.9.1.tar.gz |
|---|---|
| Size | 1.5 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
275f8213c394ceba4cd4b3acf4e173e79588b4cec09578b65caf3ff8f71a26e4
|
|
BLAKE2b-256 checksum How to use checksums |
491cf097fca80a330535b13a74da1ff229ea6cfa32bcd536b069963e62faa3d1
|
| 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 22, 2026.
Transparency logRelease files / pyrucast-0.9.1-cp311-abi3-win_amd64.whl
| Download URL | pyrucast-0.9.1-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 3.9 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
cba52376ff67e0d2d244433c40566018c026192c951042d2b836915a6bf1d3ab
|
|
BLAKE2b-256 checksum How to use checksums |
4d2ca6dfde669708618c3ef97a1abb76a25c5932193ad1cbf411d78fc52b1969
|
| 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 22, 2026.
Transparency logRelease files / pyrucast-0.9.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | pyrucast-0.9.1-cp311-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 7.0 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
e1111175d0dca5c452a747ae17cdb99bfe0073f16621c6b6d89ac17576c82e26
|
|
BLAKE2b-256 checksum How to use checksums |
4d4f86e9a6f5412e657080e4b5cb0f44083105145b4f572b07d9e4e7cad0adbd
|
| 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 22, 2026.
Transparency logRelease files / pyrucast-0.9.1-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
| Download URL | pyrucast-0.9.1-cp311-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl |
|---|---|
| Size | 8.1 MB |
| Tags | CPython 3.11 abi3 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
b6805ce7f9d10cfd99837e2e75aa1beab164d6513ebaa9e05a88e9b1e0b5082c
|
|
BLAKE2b-256 checksum How to use checksums |
a4463947e0fe2a95f2be794193b2a6f3f526dc45dce198c8c87e8ffa421f56cb
|
| 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 22, 2026.
Transparency log