Skip to main content

Finite-element library in Rust, inspired by cast3m, exposed to Python

Project description

pyrucast

Bibliothèque d'éléments finis en Rust, inspirée de cast3m, exposée à Python — et utilisable telle quelle en Rust pur (pyo3 est une dépendance optionnelle : un build par défaut ne tire ni pyo3 ni libpython).

  • Documentation complète : le book mdbook dans book/ (architecture, modèle mémoire, maillage, champs, physiques…) — mdbook build book pour le HTML.
  • Référence API Rust : cargo doc --no-deps --lib --open.

Prérequis

Outil Version Installation
Rust stable (édition 2021) rustup
Python ≥ 3.9 API Python uniquement — inutile en Rust pur
En-têtes Python API Python uniquementLinux : python3-dev (Debian/Ubuntu) ou python3-devel (Fedora/RHEL). Windows : inclus dans l'installateur officiel.

Usage en Rust pur (sans Python)

[dependencies]
pyrucast = { git = "…", default-features = false }   # pas de pyo3, pas de libpython
use pyrucast::containers::mesh::ElementType;
let mesh = pyrucast::ops::mesher::pave_surface(&contour, ElementType::TRI3, Some(1.0))?;

cargo build / cargo test (sans feature) compilent le cœur en Rust pur — ni Python ni venv requis. L'API Python (#[pyclass]) vit derrière la feature python-api, activée automatiquement par maturin.

Compilation dans un venv (API Python)

Pour les builds avec l'API Python (maturin, ou cargo --features python-api), pyo3 localise l'interpréteur via VIRTUAL_ENV : activez toujours le venv avant cargo ou maturin, sinon la compilation échoue avec error: failed to run the Python interpreter at .... (Un cargo build pur n'a pas cette contrainte.)

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 compile le module et l'installe dans le venv. Vérification :

python -c "import pyrucast; c = pyrucast.Coords(2); print(c)"

Après toute modification du Rust, relancer simplement maturin develop --release.

Développement

pip install pytest ruff     # en plus de maturin, dans le venv
cargo build                 # cœur Rust pur (sans pyo3 ; pas besoin du venv)
cargo test                  # tests unitaires + intégration + doctests (Rust pur)
maturin develop && python -m pytest   # tests Python
cargo fmt && ruff format .  # formatage standard (Rust + Python)
bash script/check.sh        # enchaîne toutes les vérifications (formatage inclus)

Le chapitre Compilation et tests du book détaille les features Cargo (viz, viz-interactive, stub-gen…), la génération du stub pyrucast.pyi et le dépannage courant.

Licence

Distribué sous licence Mozilla Public License 2.0 (MPL-2.0).

C'est un copyleft au fichier : toute modification d'un fichier source de pyrucast doit être republiée sous MPL, mais on peut librement construire du code propriétaire au-dessus de la bibliothèque et l'y combiner. La MPL est par ailleurs compatible GPL/CeCILL (« Secondary Licenses », §3.3).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyrucast-0.1.0.tar.gz (696.8 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pyrucast-0.1.0-cp313-cp313-manylinux_2_39_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.39+ x86-64

pyrucast-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (2.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

File details

Details for the file pyrucast-0.1.0.tar.gz.

File metadata

  • Download URL: pyrucast-0.1.0.tar.gz
  • Upload date:
  • Size: 696.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.14.1

File hashes

Hashes for pyrucast-0.1.0.tar.gz
Algorithm Hash digest
SHA256 9852c87ae7a88d7de2e21faeb90f2ee864fe3283729144045e4ad14ceb7214cb
MD5 dca4d6ee5c3f728eb36ae9c8bf903a24
BLAKE2b-256 770cdaeca1e28adb0355d56b5ad6caf51d229f060c39c31ee5139b5915922100

See more details on using hashes here.

File details

Details for the file pyrucast-0.1.0-cp313-cp313-manylinux_2_39_x86_64.whl.

File metadata

File hashes

Hashes for pyrucast-0.1.0-cp313-cp313-manylinux_2_39_x86_64.whl
Algorithm Hash digest
SHA256 1c2846754ba80b9b9ef3ea9d3698cd3b6a7c6073a5e252b8f6fc10ff62238b5f
MD5 4b5f9a93a6af6dd5aee4caa5be97b195
BLAKE2b-256 5565a7d6805a497205d31743da7975621874bfdd5ea3f758a7e658e5f2a17f19

See more details on using hashes here.

File details

Details for the file pyrucast-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for pyrucast-0.1.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 10cee4f98d0c80a771b20c1bf6f9665a1683d518964192458f0cc0ef5cd41ec2
MD5 ef130326a304ecc0e06edbc8cfc197a1
BLAKE2b-256 269175c7e44462864deee40d6ed542332edd38613ca4b9832aa3d50fb6696f26

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page