[build-system]
requires = ["maturin>=1.0,<2.0"]
build-backend = "maturin"

[project]
name = "stochastic-rs"
description = "A high-performance Rust library for simulating stochastic processes with first-class bindings."
requires-python = ">=3.9"
dynamic = ["version"]
dependencies = ["numpy"]
readme = "README.md"
license = {text = "MIT"}
keywords = ["stochastic", "quant", "finance", "simulation", "statistics"]
classifiers = [
  "Programming Language :: Rust",
  "Topic :: Scientific/Engineering :: Mathematics",
  "Topic :: Office/Business :: Financial",
]

[project.optional-dependencies]
dev = ["pytest>=7.0", "numpy", "scipy"]

[project.urls]
Homepage = "https://github.com/dancixx/stochastic-rs"
Repository = "https://github.com/dancixx/stochastic-rs"
Documentation = "https://docs.rs/stochastic-rs"

[tool.pytest.ini_options]
testpaths = ["stochastic-rs-py/tests"]
python_files = "test_*.py"
addopts = "-q"

# The Python module is produced by the `stochastic-rs-py` cdylib crate (see
# stochastic-rs-py/Cargo.toml), not by the workspace umbrella `stochastic-rs`
# (which is a regular `lib`). `manifest-path` redirects maturin to the right
# crate so `maturin build` / `maturin develop` work from the workspace root.
[tool.maturin]
manifest-path = "stochastic-rs-py/Cargo.toml"
module-name = "stochastic_rs"
# `features` is intentionally NOT pinned here — the `.github/workflows/pypi.yml`
# wheel builds pass platform-specific features explicitly:
#   * Linux + macOS → `--features openblas` (system-link + auditwheel/delocate
#     bundling)
#   * Windows       → `--features openblas-static` (vendored, statically linked
#     OpenBLAS via `openblas-src` because the prebuilt MinGW `.lib` does not
#     link cleanly with MSVC)
# Local `maturin develop` defaults to the empty feature set; pass
# `--features openblas` if you want the full surface during development.
