@@ -32,18 +32,15 @@ dependencies = [
3232 # for debug logging (referenced from the issue template)
3333 " session-info2" ,
3434]
35-
3635# Convenience groups combining providers
3736optional-dependencies.all-providers = [
3837 " cell-annotator[anthropic]" ,
3938 " cell-annotator[gemini]" ,
4039 " cell-annotator[openai]" ,
4140]
42-
4341optional-dependencies.anthropic = [
4442 " anthropic>=0.59" ,
4543]
46-
4744# Other optional functionality
4845optional-dependencies.colors = [
4946 " colorspacious>=1.1" ,
@@ -69,14 +66,12 @@ optional-dependencies.doc = [
6966 " sphinxcontrib-bibtex>=1" ,
7067 " sphinxext-opengraph" ,
7168]
72-
7369optional-dependencies.gemini = [
7470 " google-genai>=1.27" ,
7571]
7672optional-dependencies.gpu = [
7773 " rapids-singlecell>=0.12" ,
7874]
79-
8075# Core provider dependencies - one of these is required to use the package
8176optional-dependencies.openai = [
8277 " openai>=1.90" ,
@@ -89,57 +84,41 @@ optional-dependencies.test = [
8984 " pytest" ,
9085 " pytest-cov" , # For VS Code's coverage functionality
9186]
92-
9387optional-dependencies.tutorials = [
9488 " squidpy>=1.6" ,
9589]
96-
9790# https://docs.pypi.org/project_metadata/#project-urls
9891urls.Documentation = " https://cell-annotator.readthedocs.io/"
9992urls.Homepage = " https://cell-annotator.readthedocs.io/"
10093urls.Source = " https://github.com/quadbio/cell-annotator"
10194
102- [tool .hatch .version ]
103- source = " vcs"
104-
105- [tool .hatch .envs .default ]
106- installer = " uv"
107- features = [ " dev" ]
108-
109- [tool .hatch .envs .docs ]
110- features = [ " doc" ]
111- dev-mode = true
112- scripts.build = " sphinx-build -M html docs docs/_build {args}"
113- scripts.open = " python -m webbrowser -t docs/_build/html/index.html"
114- scripts.clean = " git clean -fdX -- {args:docs}"
115-
116- # Test the lowest and highest supported Python versions with normal deps
117- [[tool .hatch .envs .hatch-test .matrix ]]
118- deps = [ " stable" ]
119- python = [ " 3.11" , " 3.13" ]
120-
121- # Test the newest supported Python version also with pre-release deps
122- [[tool .hatch .envs .hatch-test .matrix ]]
123- deps = [ " pre" ]
124- python = [ " 3.13" ]
125-
126- [tool .hatch .envs .hatch-test ]
127- features = [ " dev" , " test" ]
128-
129- [tool .hatch .envs .hatch-test .overrides ]
95+ [tool .hatch ]
96+ envs.default.installer = " uv"
97+ envs.default.features = [ " dev" ]
98+ envs.docs.features = [ " doc" ]
99+ envs.docs.dev-mode = true
100+ envs.docs.scripts.build = " sphinx-build -M html docs docs/_build {args}"
101+ envs.docs.scripts.open = " python -m webbrowser -t docs/_build/html/index.html"
102+ envs.docs.scripts.clean = " git clean -fdX -- {args:docs}"
103+ envs.hatch-test.features = [ " dev" , " test" ]
104+ envs.hatch-test.matrix = [
105+ # Test the lowest and highest supported Python versions with normal deps
106+ { deps = [ " stable" ], python = [ " 3.11" , " 3.13" ] },
107+ # Test the newest supported Python version also with pre-release deps
108+ { deps = [ " pre" ], python = [ " 3.13" ] },
109+ ]
130110# If the matrix variable `deps` is set to "pre",
131111# set the environment variable `UV_PRERELEASE` to "allow".
132- matrix.deps.env-vars = [
112+ envs.hatch-test.overrides. matrix.deps.env-vars = [
133113 { key = " UV_PRERELEASE" , value = " allow" , if = [ " pre" ] },
134114]
115+ version.source = " vcs"
135116
136117[tool .ruff ]
137118line-length = 120
138119src = [ " src" ]
139120extend-include = [ " *.ipynb" ]
140-
141121format.docstring-code-format = true
142-
143122lint.select = [
144123 " B" , # flake8-bugbear
145124 " BLE" , # flake8-blind-except
@@ -173,22 +152,22 @@ lint.per-file-ignores."docs/*" = [ "I" ]
173152lint.per-file-ignores."tests/*" = [ " D" ]
174153lint.pydocstyle.convention = " numpy"
175154
176- [tool .pytest . ini_options ]
177- markers = [
155+ [tool .pytest ]
156+ ini_options. markers = [
178157 " real_llm_query: mark a test that sends data to an actual LLM provider." ,
179158]
180- testpaths = [ " tests" ]
181- xfail_strict = true
182- addopts = [
159+ ini_options. testpaths = [ " tests" ]
160+ ini_options. xfail_strict = true
161+ ini_options. addopts = [
183162 " --import-mode=importlib" , # allow using test files with same name
184163]
185164
186- [tool .coverage .run ]
187- source = [ " cell_annotator" ]
188- patch = [ " subprocess" ]
189- omit = [
165+ [tool .coverage ]
166+ run.omit = [
190167 " **/test_*.py" ,
191168]
169+ run.patch = [ " subprocess" ]
170+ run.source = [ " cell_annotator" ]
192171
193172[tool .cruft ]
194173skip = [
0 commit comments