[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "beta-spectrum" version = "0.4.1" description = "High-precision beta spectrum calculation for nuclear physics" authors = [ { name = "Evgeniy Unzhakov" } ] requires-python = ">=3.10" dependencies = [ "numpy", "scipy", "matplotlib", "pandas", "nbformat>=5.10.4", "nbconvert>=7.17.1", ] [project.optional-dependencies] ensdf = ["paceENSDF"] root = ["root"] # PyROOT (requires system ROOT installation) dev = [ "pytest", "nbmake", "black", "ruff", "mypy", "mdformat", "mdformat-frontmatter", "mdformat-footnote", "mdformat-tables" ] [project.scripts] bs_pnpi = "beta_spectrum.cli:main" bs_exp = "exp_data.exp_cli:main" [tool.setuptools.packages.find] where = ["."] [tool.mypy] python_version = "3.10" strict = true exclude = ["notebooks", "scripts/notebook_plots.py", "tests/"] disable_error_code = ["no-untyped-def", "arg-type", "return-value", "assignment", "misc", "import-untyped", "type-arg", "no-any-return", "union-attr", "operator"] [tool.black] line-length = 88 [tool.pytest.ini_options] testpaths = ["tests", "notebooks"] markers = [ "property: Physics property tests (positivity, monotonicity, limits)", "physics: Physics behavior tests (energy dependence, Z dependence)", "api: API contract tests (signatures, return types, error handling)", "quality: Code quality tests (shape, type, NaN, stability)", "integration: Full pipeline integration tests", "slow: Tests that take >1s to run", "requires_ensdf: Tests requiring paceENSDF package", ] timeout = 30 timeout_method = "thread" [tool.ruff] line-length = 88 [tool.mdformat] line-length = 88 wrap = false number = true