@@ -14,10 +14,9 @@ maintainers = [
1414authors = [
1515 { name = " Pau Badia i Mompel" },
1616]
17- requires-python = " >=3.10 "
17+ requires-python = " >=3.11 "
1818classifiers = [
1919 " Programming Language :: Python :: 3 :: Only" ,
20- " Programming Language :: Python :: 3.10" ,
2120 " Programming Language :: Python :: 3.11" ,
2221 " Programming Language :: Python :: 3.12" ,
2322 " Programming Language :: Python :: 3.13" ,
@@ -35,75 +34,75 @@ dependencies = [
3534 " session-info2" ,
3635 " tqdm" ,
3736]
38- optional-dependencies.dev = [
37+ # https://docs.pypi.org/project_metadata/#project-urls
38+ urls.Documentation = " https://decoupler.readthedocs.io/"
39+ urls.Homepage = " https://github.com/scverse/decoupler"
40+ urls.Source = " https://github.com/scverse/decoupler"
41+
42+ [dependency-groups ]
43+ dev = [
3944 " pre-commit" ,
4045 " twine>=4.0.2" ,
4146]
42- optional-dependencies.doc = [
43- " docutils>=0.8,!=0.18.*,!=0.19.*" ,
47+ test = [
48+ " coverage>=7.10" ,
49+ " dcor" ,
50+ " gseapy" ,
51+ " igraph" ,
52+ " ipywidgets" ,
53+ " memory-profiler" ,
54+ " pydeseq2" ,
55+ " pytest" ,
56+ " pytest-cov" , # For VS Code’s coverage functionality
57+ " scanpy" ,
58+ " statsmodels" ,
59+ " xgboost" ,
60+ ]
61+ doc = [
4462 " ipykernel" ,
4563 " ipython" ,
4664 " myst-nb>=1.1" ,
4765 " pandas" ,
48- # Until pybtex >0.24.0 releases: https://bitbucket.org/pybtex-devs/pybtex/issues/169/
49- " setuptools" ,
5066 " sphinx>=8.1" ,
5167 " sphinx-autodoc-typehints" ,
5268 " sphinx-book-theme>=1" ,
5369 " sphinx-copybutton" ,
5470 " sphinx-tabs" ,
5571 " sphinxcontrib-bibtex>=1" ,
72+ " sphinxcontrib-katex" ,
5673 " sphinxext-opengraph" ,
5774]
58- optional-dependencies. full = [
75+ full = [
5976 " dcor" ,
6077 " igraph" ,
6178 " ipywidgets" ,
6279 " pydeseq2" ,
6380 " scanpy" ,
6481 " xgboost" ,
6582]
66- optional-dependencies.test = [
67- " coverage>=7.10" ,
68- " dcor" ,
69- " gseapy" ,
70- " igraph" ,
71- " ipywidgets" ,
72- " memory-profiler" ,
73- " pydeseq2" ,
74- " pytest" ,
75- " pytest-cov" , # For VS Code’s coverage functionality
76- " scanpy" ,
77- " statsmodels" ,
78- " xgboost" ,
79- ]
80- # https://docs.pypi.org/project_metadata/#project-urls
81- urls.Documentation = " https://decoupler.readthedocs.io/"
82- urls.Homepage = " https://github.com/scverse/decoupler"
83- urls.Source = " https://github.com/scverse/decoupler"
8483
8584[tool .hatch .envs .default ]
8685installer = " uv"
87- features = [ " dev" ]
86+ dependency-groups = [ " dev" ]
8887
8988[tool .hatch .envs .docs ]
90- features = [ " doc" ]
89+ dependency-groups = [ " doc" ]
9190scripts.build = " sphinx-build -M html docs docs/_build -W {args}"
9291scripts.open = " python -m webbrowser -t docs/_build/html/index.html"
9392scripts.clean = " git clean -fdX -- {args:docs}"
9493
9594# Test the lowest and highest supported Python versions with normal deps
9695[[tool .hatch .envs .hatch-test .matrix ]]
9796deps = [ " stable" ]
98- python = [ " 3.10 " , " 3.13 " ]
97+ python = [ " 3.11 " , " 3.14 " ]
9998
10099# Test the newest supported Python version also with pre-release deps
101100[[tool .hatch .envs .hatch-test .matrix ]]
102101deps = [ " pre" ]
103- python = [ " 3.13 " ]
102+ python = [ " 3.14 " ]
104103
105104[tool .hatch .envs .hatch-test ]
106- features = [ " dev" , " test" ]
105+ dependency-groups = [ " dev" , " test" ]
107106
108107[tool .hatch .envs .hatch-test .overrides ]
109108# If the matrix variable `deps` is set to "pre",
@@ -152,9 +151,9 @@ lint.per-file-ignores."docs/*" = [ "I" ]
152151lint.per-file-ignores."tests/*" = [ " D" ]
153152lint.pydocstyle.convention = " numpy"
154153
155- [tool .pytest .ini_options ]
154+ [tool .pytest ]
155+ strict = true
156156testpaths = [ " tests" ]
157- xfail_strict = true
158157addopts = [
159158 " --import-mode=importlib" , # allow using test files with same name
160159]
0 commit comments