11[build-system ]
22build-backend = " hatchling.build"
3- requires = [ " hatchling" ]
3+ requires = [ " hatch-vcs " , " hatchling" ]
44
55[project ]
66name = " aca-model"
7- version = " 0.0.0"
87description = " Core lifecycle model for the ACA structural retirement project."
98readme = { file = " README.md" , content-type = " text/markdown" }
109keywords = [
@@ -23,11 +22,12 @@ classifiers = [
2322 " Programming Language :: Python :: 3 :: Only" ,
2423 " Programming Language :: Python :: 3.14" ,
2524]
25+ dynamic = [ " version" ]
2626dependencies = [
2727 " attrs" ,
28+ " beartype" ,
2829 " cloudpickle" ,
2930 " dags" ,
30- " estimagic" ,
3131 " jax>=0.9" ,
3232 " jaxtyping" ,
3333 " numpy>=2.2" ,
@@ -43,13 +43,19 @@ email = "hmgaudecker@uni-bonn.de"
4343[[project .maintainers ]]
4444name = " Hans-Martin von Gaudecker"
4545email = " hmgaudecker@uni-bonn.de"
46+ [project .urls ]
47+ Github = " https://github.com/OpenSourceEconomics/aca-model"
48+ Repository = " https://github.com/OpenSourceEconomics/aca-model"
49+ Tracker = " https://github.com/OpenSourceEconomics/aca-model/issues"
4650
4751[tool .hatch ]
52+ version.source = " vcs"
53+ metadata.allow-direct-references = true
54+ build.hooks.vcs.version-file = " src/aca_model/_version.py"
4855build.targets.sdist.exclude = [ " tests" ]
4956build.targets.sdist.only-packages = true
5057build.targets.wheel.only-include = [ " src" ]
5158build.targets.wheel.sources = [ " src" ]
52- metadata.allow-direct-references = true
5359
5460[tool .ruff ]
5561fix = true
@@ -84,9 +90,21 @@ extend-ignore = [
8490 " RUF002" , # Ambiguous Unicode in docstrings (Greek letters in math)
8591 " RUF003" , # Ambiguous Unicode in comments (Greek letters in math)
8692]
87- per-file-ignores."src/aca_model/models/*" = [ " E501" ]
88- per-file-ignores."task_*.py" = [ " ANN" , " ARG001" ]
89- per-file-ignores."tests/*" = [ " D" , " E501" , " INP001" , " PD011" , " PLR2004" , " S101" ]
93+ per-file-ignores."src/aca_model/models/*" = [
94+ " E501" , # Line too long (generated model files)
95+ ]
96+ per-file-ignores."task_*.py" = [
97+ " ANN" , # Type annotations (use ty instead)
98+ " ARG001" , # Unused function argument (pytask signatures)
99+ ]
100+ per-file-ignores."tests/*" = [
101+ " D" , # Docstrings
102+ " E501" , # Line too long
103+ " INP001" , # Implicit namespace package
104+ " PD011" , # Use of .values (false positives on non-pandas objects)
105+ " PLR2004" , # Magic value used in comparison
106+ " S101" , # Use of assert
107+ ]
90108pydocstyle.convention = " google"
91109
92110[tool .pyproject-fmt ]
@@ -111,13 +129,13 @@ rules.unused-ignore-comment = "error"
111129
112130[tool .pytest ]
113131ini_options.addopts = ' --pdbcls=pdbp:Pdb --ignore-glob=*skip_* -m "not long_running"'
114- ini_options.filterwarnings = []
115132ini_options.markers = [
116133 """ \
117134 long_running: Tests that take a lot of time to run (run them via pytest -m \
118135 long_running).\
119136 """ ,
120137]
138+ ini_options.filterwarnings = []
121139
122140[tool .yamlfix ]
123141line_length = 88
0 commit comments