[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "beta-spectrum" version = "0.3.0" description = "High-precision beta spectrum calculation for nuclear physics" authors = [ { name = "Evgeniy Unzhakov" } ] requires-python = ">=3.10" dependencies = [ "numpy", "scipy", "matplotlib", "pandas" ] [project.optional-dependencies] ensdf = ["paceENSDF"] dev = [ "pytest", "nbmake", "black", "ruff", "mypy", "mdformat", "mdformat-frontmatter", "mdformat-footnote", "mdformat-tables" ] [project.scripts] bs_pnpi = "beta_spectrum.cli:main" [tool.setuptools.packages.find] where = ["."] [tool.mypy] python_version = "3.10" strict = true exclude = ["notebooks", "scripts/notebook_plots.py"] disable_error_code = ["no-untyped-def", "arg-type", "return-value", "assignment", "misc", "import-untyped"] [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