[build-system]
requires = ["maturin>=1.7,<2"]
build-backend = "maturin"
[project]
name = "gamfit"
version = "0.1.17"
description = "Formula-first generalized additive models with a high-performance Rust core"
readme = "README_PYPI.md"
requires-python = ">=3.10"
license = "AGPL-3.0-or-later"
license-files = ["LICENSE"]
authors = [{ name = "SauersML" }]
keywords = [
"gam",
"gamfit",
"generalized-additive-models",
"regression",
"smoothing-splines",
"thin-plate-spline",
"reml",
"statistics",
"machine-learning",
"rust",
]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Science/Research",
"Operating System :: MacOS",
"Operating System :: POSIX :: Linux",
"Operating System :: Microsoft :: Windows",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3 :: Only",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Programming Language :: Python :: Implementation :: CPython",
"Programming Language :: Rust",
"Topic :: Scientific/Engineering",
"Topic :: Scientific/Engineering :: Information Analysis",
"Topic :: Scientific/Engineering :: Mathematics",
"Typing :: Typed",
]
dependencies = []
[project.urls]
Homepage = "https://github.com/SauersML/gam"
Repository = "https://github.com/SauersML/gam"
Issues = "https://github.com/SauersML/gam/issues"
Changelog = "https://github.com/SauersML/gam/releases"
[project.optional-dependencies]
test = [
"pytest>=8",
"numpy>=1.26",
"pandas>=2.0",
"pyarrow>=14",
"matplotlib>=3.8",
"scikit-learn>=1.4",
]
numpy = ["numpy>=1.26"]
pandas = ["pandas>=2.0", "pyarrow>=14"]
plot = ["matplotlib>=3.8"]
sklearn = ["scikit-learn>=1.4", "numpy>=1.26"]
type = [
"mypy>=1.18",
"numpy>=1.26",
"pandas>=2.0",
"pandas-stubs",
"pyarrow>=14",
"polars>=1",
"matplotlib>=3.8",
"scikit-learn>=1.4",
"scikit-learn-stubs",
"scipy-stubs",
"pytest>=8",
"types-requests",
"vulture>=2.16",
]
all = [
"numpy>=1.26",
"pandas>=2.0",
"pyarrow>=14",
"matplotlib>=3.8",
"scikit-learn>=1.4",
]
[tool.maturin]
manifest-path = "crates/gam-pyffi/Cargo.toml"
module-name = "gamfit._rust"
[tool.mypy]
python_version = "3.10"
strict = true
files = ["gamfit", "tests", "scripts", "bench"]
exclude = [
"^bench/\\.venv/",
]
[tool.vulture]
paths = ["gamfit", "tests", "scripts", "bench"]
exclude = ["bench/.venv/"]
ignore_names = [
"_repr_html_",
]