Read the Docs build information Build id: 4202943 Project: icb-scanpy Version: 4170 Commit: f285c720acfc21fbe1a9ea1ba1ef263e1c18b8c0 Date: 2026-07-13T08:02:55.656136Z State: finished Success: False [rtd-command-info] start-time: 2026-07-13T08:02:56.522485Z, end-time: 2026-07-13T08:02:57.453990Z, duration: 0, exit-code: 0 git clone --depth 1 https://github.com/scverse/scanpy.git . Cloning into '.'... [rtd-command-info] start-time: 2026-07-13T08:02:57.529967Z, end-time: 2026-07-13T08:02:58.035186Z, duration: 0, exit-code: 0 git fetch origin --force --prune --prune-tags --depth 50 pull/4170/head:external-4170 From https://github.com/scverse/scanpy * [new ref] refs/pull/4170/head -> external-4170 [rtd-command-info] start-time: 2026-07-13T08:02:58.778772Z, end-time: 2026-07-13T08:02:58.921200Z, duration: 0, exit-code: 0 git checkout --force f285c720acfc21fbe1a9ea1ba1ef263e1c18b8c0 Note: switching to 'f285c720acfc21fbe1a9ea1ba1ef263e1c18b8c0'. You are in 'detached HEAD' state. You can look around, make experimental changes and commit them, and you can discard any commits you make in this state without impacting any branches by switching back to a branch. If you want to create a new branch to retain commits you create, you may do so (now or later) by using -c with the switch command. Example: git switch -c Or undo this operation with: git switch - Turn off this advice by setting config variable advice.detachedHead to false HEAD is now at f285c72 Merge branch 'networkit_gve' of https://github.com/amalia-k510/scanpy into networkit_gve [rtd-command-info] start-time: 2026-07-13T08:02:59.005779Z, end-time: 2026-07-13T08:02:59.045084Z, duration: 0, exit-code: 0 cat .readthedocs.yml # https://docs.readthedocs.io/en/stable/config-file/v2.html version: 2 submodules: include: all build: os: ubuntu-24.04 tools: python: '3.13' jobs: post_checkout: # unshallow so version can be derived from tag - git fetch --unshallow || true create_environment: - asdf plugin add uv - asdf install uv latest - asdf global uv latest pre_build: # run towncrier to preview the next version’s release notes - ( find docs/release-notes -regex '[^.]+[.][^.]+.md' | grep -q . ) && uvx hatch run towncrier build --keep || true build: html: - uvx hatch run docs:build -T - mv docs/_build $READTHEDOCS_OUTPUT [rtd-command-info] start-time: 2026-07-13T08:02:59.168058Z, end-time: 2026-07-13T08:02:59.237743Z, duration: 0, exit-code: 0 git submodule sync [rtd-command-info] start-time: 2026-07-13T08:02:59.316191Z, end-time: 2026-07-13T08:03:20.242693Z, duration: 20, exit-code: 0 git submodule update --init --force -- Submodule 'notebooks' (https://github.com/scverse/scanpy-tutorials/) registered for path 'notebooks' Cloning into '/home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/notebooks'... Submodule path 'notebooks': checked out 'ac0e94be9f36977400177dc940cbd8eac1d2297c' [rtd-command-info] start-time: 2026-07-13T08:03:20.317537Z, end-time: 2026-07-13T08:03:24.499324Z, duration: 4, exit-code: 0 git fetch --unshallow || true From https://github.com/scverse/scanpy * [new tag] 0.0 -> 0.0 * [new tag] 0.1 -> 0.1 * [new tag] 0.2 -> 0.2 * [new tag] 0.2.1 -> 0.2.1 * [new tag] 0.2.3 -> 0.2.3 * [new tag] 0.2.3.5 -> 0.2.3.5 * [new tag] 0.2.4 -> 0.2.4 * [new tag] 0.2.5 -> 0.2.5 * [new tag] 0.2.6 -> 0.2.6 * [new tag] 0.2.7 -> 0.2.7 * [new tag] 0.2.8 -> 0.2.8 * [new tag] 0.2.9 -> 0.2.9 * [new tag] 0.2.9.1 -> 0.2.9.1 * [new tag] 0.3 -> 0.3 * [new tag] 0.3.1 -> 0.3.1 * [new tag] 0.3.2 -> 0.3.2 * [new tag] 0.4 -> 0.4 * [new tag] 0.4.1 -> 0.4.1 * [new tag] 0.4.2 -> 0.4.2 * [new tag] 0.4.2.post1 -> 0.4.2.post1 * [new tag] 0.4.2.post2 -> 0.4.2.post2 * [new tag] 0.4.3 -> 0.4.3 * [new tag] 0.4.4 -> 0.4.4 * [new tag] 1.0 -> 1.0 * [new tag] 1.0.1 -> 1.0.1 * [new tag] 1.0.2 -> 1.0.2 * [new tag] 1.0.3 -> 1.0.3 * [new tag] 1.0.4 -> 1.0.4 * [new tag] 1.1 -> 1.1 * [new tag] 1.10.0.dev0 -> 1.10.0.dev0 * [new tag] 1.10.0rc1 -> 1.10.0rc1 * [new tag] 1.11.0 -> 1.11.0 * [new tag] 1.11.0rc1 -> 1.11.0rc1 * [new tag] 1.11.0rc2 -> 1.11.0rc2 * [new tag] 1.12.0 -> 1.12.0 * [new tag] 1.12.0rc1 -> 1.12.0rc1 * [new tag] 1.1a1 -> 1.1a1 * [new tag] 1.1a2 -> 1.1a2 * [new tag] 1.2.0 -> 1.2.0 * [new tag] 1.2.1 -> 1.2.1 * [new tag] 1.2.2 -> 1.2.2 * [new tag] 1.3 -> 1.3 * [new tag] 1.3.1 -> 1.3.1 * [new tag] 1.3.2 -> 1.3.2 * [new tag] 1.3.3 -> 1.3.3 * [new tag] 1.3.4 -> 1.3.4 * [new tag] 1.3.5 -> 1.3.5 * [new tag] 1.3.6 -> 1.3.6 * [new tag] 1.3.7 -> 1.3.7 * [new tag] 1.3.8 -> 1.3.8 * [new tag] 1.4 -> 1.4 * [new tag] 1.4.1 -> 1.4.1 * [new tag] 1.4.2 -> 1.4.2 * [new tag] 1.4.3 -> 1.4.3 * [new tag] 1.4.4 -> 1.4.4 * [new tag] 1.4.5 -> 1.4.5 * [new tag] 1.4.5.1 -> 1.4.5.1 * [new tag] 1.4.5.post1 -> 1.4.5.post1 * [new tag] 1.4.5.post2 -> 1.4.5.post2 * [new tag] 1.4.5.post3 -> 1.4.5.post3 * [new tag] 1.4.6 -> 1.4.6 * [new tag] 1.5.0 -> 1.5.0 * [new tag] 1.5.0a1 -> 1.5.0a1 * [new tag] 1.5.1 -> 1.5.1 * [new tag] 1.6.0 -> 1.6.0 * [new tag] 1.7.0rc1 -> 1.7.0rc1 * [new tag] 1.8.0 -> 1.8.0 * [new tag] 1.8.0.dev0 -> 1.8.0.dev0 * [new tag] 1.9.0 -> 1.9.0 * [new tag] 1.9.0.dev0 -> 1.9.0.dev0 Fetching submodule notebooks From https://github.com/scverse/scanpy-tutorials * branch 26e16f83387caef76abdd42afda3c7c13f7139f1 -> FETCH_HEAD [rtd-command-info] start-time: 2026-07-13T08:03:28.806168Z, end-time: 2026-07-13T08:03:28.864510Z, duration: 0, exit-code: 0 asdf global python 3.13.14 [rtd-command-info] start-time: 2026-07-13T08:03:29.372269Z, end-time: 2026-07-13T08:03:30.473165Z, duration: 1, exit-code: 0 asdf plugin add uv updating plugin repository...From https://github.com/asdf-vm/asdf-plugins 8e311ee..c0369a1 master -> origin/master * [new branch] dependabot/github_actions/actions/checkout-6 -> origin/dependabot/github_actions/actions/checkout-6 * [new branch] dependabot/github_actions/amannn/action-semantic-pull-request-6.1.1 -> origin/dependabot/github_actions/amannn/action-semantic-pull-request-6.1.1 * [new branch] dependabot/github_actions/asdf-vm/actions-4 -> origin/dependabot/github_actions/asdf-vm/actions-4 HEAD is now at c0369a1 feat: add yasm plugin (#1087) [rtd-command-info] start-time: 2026-07-13T08:03:30.546952Z, end-time: 2026-07-13T08:03:31.682838Z, duration: 1, exit-code: 0 asdf install uv latest redirect url: https://github.com/astral-sh/uv/releases/tag/0.11.28 * Downloading uv release 0.11.28... uv 0.11.28 installation was successful! [rtd-command-info] start-time: 2026-07-13T08:03:31.765833Z, end-time: 2026-07-13T08:03:31.876915Z, duration: 0, exit-code: 0 asdf global uv latest redirect url: https://github.com/astral-sh/uv/releases/tag/0.11.28 [rtd-command-info] start-time: 2026-07-13T08:03:32.015512Z, end-time: 2026-07-13T08:03:37.653031Z, duration: 5, exit-code: 0 ( find docs/release-notes -regex '[^.]+[.][^.]+.md' | grep -q . ) && uvx hatch run towncrier build --keep || true Downloading virtualenv (5.3MiB) Downloading uv (25.9MiB) Downloading pygments (1.2MiB) Downloading cryptography (4.5MiB) Downloaded virtualenv Downloaded uv Downloaded cryptography Downloaded pygments Installed 43 packages in 22ms Creating environment: default Installing project in development mode Checking dependencies Syncing dependencies Loading template... Finding news fragments... Rendering news fragments... Writing to newsfile... Staging newsfile... Keeping the following files: /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4126.perf.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4055.feat.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4141.perf.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4178.fix.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4184.fix.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/3953.feat.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4081.feat.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4052.breaking.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4037.feat.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4132.feat.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4081.perf.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4010.chore.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4013.perf.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4191.chore.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4147.perf.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/3653.feat.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/3983.feat.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4142.fix.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4143.perf.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4192.fix.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4038.feat.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4112.fix.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4100.docs.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4039.breaking.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4036.perf.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4079.docs.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/3999.feat.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4017.feat.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4062.perf.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/3984.breaking.md /home/docs/checkouts/readthedocs.org/user_builds/icb-scanpy/checkouts/4170/docs/release-notes/4076.feat.md Done! [rtd-command-info] start-time: 2026-07-13T08:03:37.740585Z, end-time: 2026-07-13T08:03:39.468317Z, duration: 1, exit-code: 1 uvx hatch run docs:build -T Creating environment: docs Installing project in development mode ╭───────────────────── Traceback (most recent call last) ──────────────────────╮ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/hatch/cli/__init__.py:243 in main │ │ │ │ 240 │ │ 241 def main(): # no cov │ │ 242 │ try: │ │ ❱ 243 │ │ hatch(prog_name="hatch", windows_expand_args=False) │ │ 244 │ except Exception: # noqa: BLE001 │ │ 245 │ │ import sys │ │ 246 │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/click/core.py:1569 in __call__ │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/click/core.py:1490 in main │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/click/core.py:1970 in invoke │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/click/core.py:1353 in invoke │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/click/core.py:907 in invoke │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/click/decorators.py:34 in new_func │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/hatch/cli/run/__init__.py:157 in run │ │ │ │ 154 │ elif not env_name: │ │ 155 │ │ env_name = "system" │ │ 156 │ │ │ ❱ 157 │ ctx.invoke( │ │ 158 │ │ run_command, │ │ 159 │ │ args=[command, *final_args], │ │ 160 │ │ env_names=[env_name], │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/click/core.py:907 in invoke │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/click/decorators.py:46 in new_func │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/hatch/cli/env/run.py:137 in run │ │ │ │ 134 │ elif not matrix_selected and (included_variables or excluded_varia │ │ 135 │ │ app.abort(f"Variable selection is unsupported for non-matrix e │ │ 136 │ │ │ ❱ 137 │ for context in app.runner_context( │ │ 138 │ │ environments, │ │ 139 │ │ ignore_compat=ignore_compat or matrix_selected, │ │ 140 │ │ display_header=matrix_selected, │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/hatch/cli/application.py:135 in runner_context │ │ │ │ 132 │ │ │ │ context = ExecutionContext(environment) │ │ 133 │ │ │ │ yield context │ │ 134 │ │ │ │ │ │ ❱ 135 │ │ │ │ self.prepare_environment(environment, keep_env=keep_en │ │ 136 │ │ │ │ self.execute_context(context) │ │ 137 │ │ │ │ 138 │ │ if incompatible: │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/hatch/cli/application.py:52 in prepare_environment │ │ │ │ 49 │ │ return self.project.get_environment(env_name) │ │ 50 │ │ │ 51 │ def prepare_environment(self, environment: EnvironmentInterface, * │ │ ❱ 52 │ │ self.project.prepare_environment(environment, keep_env=keep_en │ │ 53 │ │ │ 54 │ def run_shell_commands(self, context: ExecutionContext) -> None: │ │ 55 │ │ with context.env.command_context(): │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/hatch/project/core.py:236 in prepare_environment │ │ │ │ 233 │ │ │ │ │ │ │ ) │ │ 234 │ │ │ │ 235 │ │ with environment.app_status_dependency_state_check(): │ │ ❱ 236 │ │ │ new_dep_hash = environment.dependency_hash() │ │ 237 │ │ │ │ 238 │ │ current_dep_hash = self.env_metadata.dependency_hash(environme │ │ 239 │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/hatch/env/plugin/interface.py:804 in dependency_hash │ │ │ │ 801 │ │ """ │ │ 802 │ │ from hatch.utils.dep import hash_dependencies │ │ 803 │ │ │ │ ❱ 804 │ │ return hash_dependencies(self.all_dependencies_complex) │ │ 805 │ │ │ 806 │ @contextmanager │ │ 807 │ def app_status_creation(self): │ │ │ │ /home/docs/.asdf/installs/python/3.13.14/lib/python3.13/functools.py:1025 in │ │ __get__ │ │ │ │ 1022 │ │ │ raise TypeError(msg) from None │ │ 1023 │ │ val = cache.get(self.attrname, _NOT_FOUND) │ │ 1024 │ │ if val is _NOT_FOUND: │ │ ❱ 1025 │ │ │ val = self.func(instance) │ │ 1026 │ │ │ try: │ │ 1027 │ │ │ │ cache[self.attrname] = val │ │ 1028 │ │ │ except TypeError: │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/hatch/env/plugin/interface.py:429 in all_dependencies_complex │ │ │ │ 426 │ │ │ local_metadata[member.name.lower()] = member.project.meta │ │ 427 │ │ │ │ 428 │ │ filtered_deps: list[Dependency] = [] │ │ ❱ 429 │ │ for dep in self.dependencies_complex: │ │ 430 │ │ │ dep_obj = dep if isinstance(dep, Dependency) else Depende │ │ 431 │ │ │ │ │ 432 │ │ │ name_lower = dep_obj.name.lower() │ │ │ │ /home/docs/.asdf/installs/python/3.13.14/lib/python3.13/functools.py:1025 in │ │ __get__ │ │ │ │ 1022 │ │ │ raise TypeError(msg) from None │ │ 1023 │ │ val = cache.get(self.attrname, _NOT_FOUND) │ │ 1024 │ │ if val is _NOT_FOUND: │ │ ❱ 1025 │ │ │ val = self.func(instance) │ │ 1026 │ │ │ try: │ │ 1027 │ │ │ │ cache[self.attrname] = val │ │ 1028 │ │ │ except TypeError: │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/hatch/env/plugin/interface.py:372 in dependencies_complex │ │ │ │ 369 │ │ │ else: │ │ 370 │ │ │ │ all_dependencies_complex.append(Dependency(str(dep))) │ │ 371 │ │ │ │ ❱ 372 │ │ if self.dependency_groups and not self.skip_install: │ │ 373 │ │ │ from hatch.utils.dep import get_complex_dependency_group │ │ 374 │ │ │ │ │ 375 │ │ │ for dependency_group in self.dependency_groups: │ │ │ │ /home/docs/.asdf/installs/python/3.13.14/lib/python3.13/functools.py:1025 in │ │ __get__ │ │ │ │ 1022 │ │ │ raise TypeError(msg) from None │ │ 1023 │ │ val = cache.get(self.attrname, _NOT_FOUND) │ │ 1024 │ │ if val is _NOT_FOUND: │ │ ❱ 1025 │ │ │ val = self.func(instance) │ │ 1026 │ │ │ try: │ │ 1027 │ │ │ │ cache[self.attrname] = val │ │ 1028 │ │ │ except TypeError: │ │ │ │ /home/docs/.cache/uv/archive-v0/ZpOqNDaVbWfOGw8E/lib/python3.13/site-package │ │ s/hatch/env/plugin/interface.py:596 in dependency_groups │ │ │ │ 593 │ │ │ │ │ f"Dependency Group `{normalized_dependency_group} │ │ 594 │ │ │ │ │ f"defined in field `dependency-groups`" │ │ 595 │ │ │ │ ) │ │ ❱ 596 │ │ │ │ raise ValueError(message) │ │ 597 │ │ │ │ │ 598 │ │ │ all_dependency_groups.add(normalized_dependency_group) │ │ 599 │ ╰──────────────────────────────────────────────────────────────────────────────╯ ValueError: Dependency Group `docs` of field `tool.hatch.envs.docs.dependency-groups` is not defined in field `dependency-groups`