11[project ]
22name = " pytask"
3- description = " In its highest aspirations, pytask tries to be pytest as a build system ."
3+ description = " pytask is a workflow management system that facilitates reproducible data analyses ."
44requires-python = " >=3.8"
55classifiers = [
6- " Development Status :: 4 - Beta" ,
7- " Environment :: Console" ,
8- " Intended Audience :: Science/Research" ,
9- " License :: OSI Approved :: MIT License" ,
10- " Operating System :: MacOS :: MacOS X" ,
11- " Operating System :: Microsoft :: Windows" ,
12- " Operating System :: POSIX" ,
13- " Programming Language :: Python :: 3 :: Only" ,
14- " Programming Language :: Python :: 3.8" ,
15- " Programming Language :: Python :: 3.9" ,
16- " Programming Language :: Python :: 3.10" ,
17- " Programming Language :: Python :: 3.11" ,
18- " Programming Language :: Python :: 3.12" ,
19- " Topic :: Scientific/Engineering" ,
20- " Topic :: Software Development :: Build Tools" ,
6+ " Development Status :: 4 - Beta" ,
7+ " Environment :: Console" ,
8+ " Intended Audience :: Science/Research" ,
9+ " License :: OSI Approved :: MIT License" ,
10+ " Operating System :: MacOS :: MacOS X" ,
11+ " Operating System :: Microsoft :: Windows" ,
12+ " Operating System :: POSIX" ,
13+ " Programming Language :: Python :: 3 :: Only" ,
14+ " Programming Language :: Python :: 3.8" ,
15+ " Programming Language :: Python :: 3.9" ,
16+ " Programming Language :: Python :: 3.10" ,
17+ " Programming Language :: Python :: 3.11" ,
18+ " Programming Language :: Python :: 3.12" ,
19+ " Topic :: Scientific/Engineering" ,
20+ " Topic :: Software Development :: Build Tools" ,
2121]
2222dynamic = [" version" ]
2323dependencies = [
@@ -48,18 +48,19 @@ email = "raabe@posteo.de"
4848
4949[project .optional-dependencies ]
5050docs = [
51- " furo" ,
52- " ipython" ,
53- " matplotlib" ,
54- " myst-parser" ,
55- " nbsphinx" ,
56- " sphinx" ,
57- " sphinx-click" ,
58- " sphinx-copybutton" ,
59- " sphinx-design>=0.3" ,
60- " sphinx-toolbox" ,
61- " sphinxext-opengraph" ,
51+ " furo" ,
52+ " ipython" ,
53+ " matplotlib" ,
54+ " myst-parser" ,
55+ " nbsphinx" ,
56+ " sphinx" ,
57+ " sphinx-click" ,
58+ " sphinx-copybutton" ,
59+ " sphinx-design>=0.3" ,
60+ " sphinx-toolbox" ,
61+ " sphinxext-opengraph" ,
6262]
63+ plugin-list = [" httpx" , " tabulate[widechars]" , " tqdm" ]
6364test = [
6465 " deepdiff" ,
6566 " nbmake" ,
@@ -68,15 +69,10 @@ test = [
6869 " pytest-cov" ,
6970 " pytest-xdist" ,
7071 " syrupy" ,
71- # For HTTPPath tests.
72- " aiohttp" ,
72+ " aiohttp" , # For HTTPPath tests.
7373 " coiled" ,
7474]
75- plugin-list = [
76- " httpx>=0.27.0" ,
77- " tabulate[widechars]>=0.9.0" ,
78- " tqdm>=4.66.2" ,
79- ]
75+ typing = [" mypy>=1.9.0" , " nbqa[mypy]>=1.8.5" ]
8076
8177[project .urls ]
8278Changelog = " https://pytask-dev.readthedocs.io/en/stable/changes.html"
@@ -94,7 +90,7 @@ build-backend = "hatchling.build"
9490
9591[tool .rye ]
9692managed = true
97- dev-dependencies = []
93+ dev-dependencies = [" tox-uv>=1.7.0 " ]
9894
9995[tool .hatch .build .hooks .vcs ]
10096version-file = " src/_pytask/_version.py"
@@ -124,15 +120,15 @@ select = ["ALL"]
124120ignore = [
125121 " ANN101" ,
126122 " ANN102" ,
127- " ANN401" , # flake8-annotate typing.Any
128- " COM812" , # Comply with ruff-format.
129- " ISC001" , # Comply with ruff-format.
123+ " ANN401" , # flake8-annotate typing.Any
124+ " COM812" , # Comply with ruff-format.
125+ " ISC001" , # Comply with ruff-format.
130126 " FBT" ,
131127 " PD901" , # Avoid generic df for dataframes.
132- " S101" , # raise errors for asserts.
133- " S603" , # Call check with subprocess.run.
134- " S607" , # Call subprocess.run with partial executable path.
135- " SLF001" , # access private members.
128+ " S101" , # raise errors for asserts.
129+ " S603" , # Call check with subprocess.run.
130+ " S607" , # Call subprocess.run with partial executable path.
131+ " SLF001" , # access private members.
136132]
137133
138134[tool .ruff .lint .per-file-ignores ]
@@ -148,10 +144,13 @@ ignore = [
148144"docs/source/conf.py" = [" D401" , " INP001" ]
149145"docs_src/*" = [" ARG001" , " D" , " INP001" , " S301" ]
150146"docs_src/*/*.py" = [" FA100" , " FA102" , " PLR2004" , " TCH" ]
151- "docs/source/how_to_guides/functional_interface*" = [" B018" , " D" , " INP" , " ARG005" ]
147+ "docs/source/how_to_guides/functional_interface*" = [
148+ " B018" ,
149+ " D" ,
150+ " INP" ,
151+ " ARG005" ,
152+ ]
152153"docs_src/how_to_guides/using_task_returns_*_task.py" = [" ARG005" , " E731" ]
153- "docs_src/how_to_guides/writing_custom_nodes_*.py" = [" S301" ]
154- "docs_src/tutorials/using_a_data_catalog_*.py" = [" RET504" ]
155154
156155[tool .ruff .lint .isort ]
157156force-single-line = true
@@ -191,6 +190,10 @@ ignore_errors = true
191190module = [" click_default_group" , " networkx" ]
192191ignore_missing_imports = true
193192
193+ [[tool .mypy .overrides ]]
194+ module = [" _pytask.coiled_utils" ]
195+ disable_error_code = [" import-not-found" ]
196+
194197[[tool .mypy .overrides ]]
195198module = [" _pytask.hookspecs" ]
196199disable_error_code = [" empty-body" ]
0 commit comments