[build-system]
requires = ["maturin>=1.5,<2.0"]
build-backend = "maturin"
[project]
name = "rustmatrix"
version = "2.1.1"
description = "Rust-backed T-matrix scattering for nonspherical particles (port of pytmatrix)"
readme = "README.md"
license = { text = "MIT" }
authors = [
{ name = "Stephen Nesbitt", email = "snesbitt@illinois.edu" },
]
requires-python = ">=3.9"
classifiers = [
"Development Status :: 5 - Production/Stable",
"Intended Audience :: Science/Research",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Rust",
"Topic :: Scientific/Engineering :: Physics",
"Topic :: Scientific/Engineering :: Atmospheric Science",
]
dependencies = [
"numpy>=1.23",
"scipy>=1.10",
]
[project.optional-dependencies]
test = [
"pytest>=7",
"pytest-xdist",
"numpy>=1.23,<2",
"scipy>=1.10,<1.14",
]
dev = [
"maturin>=1.5",
"ruff",
]
examples = [
"matplotlib",
"jupyter",
"ipywidgets",
]
docs = [
"sphinx>=7,<9",
"myst-parser>=3",
"myst-nb>=1.1",
"sphinx-autodoc-typehints",
"sphinx-design",
"sphinx-copybutton",
"pydata-sphinx-theme",
"sphinxcontrib-bibtex",
"ipywidgets",
"jupyter",
"linkify-it-py",
"matplotlib",
]
[project.urls]
Repository = "https://github.com/swnesbitt/rustmatrix"
Issues = "https://github.com/swnesbitt/rustmatrix/issues"
[tool.maturin]
python-source = "python"
module-name = "rustmatrix._core"
features = ["extension-module"]
strip = true
[tool.pytest.ini_options]
minversion = "7.0"
testpaths = ["tests"]
python_files = ["test_*.py"]
addopts = "-ra --strict-markers"
markers = [
"parity: tests that compare rustmatrix to the original pytmatrix",
"slow: long-running tests",
]
[tool.ruff]
line-length = 100
target-version = "py39"
[tool.uv.extra-build-dependencies]
pytmatrix = ["numpy", "setuptools", "wheel"]