From a8107dfe9de124f710417cdf5cc2b711fc92417f Mon Sep 17 00:00:00 2001 From: "Philipp A." Date: Mon, 22 Jun 2026 12:51:15 +0200 Subject: [PATCH 1/6] Backport PR #2352: docs: update scverse-misc to 0.1 (#2510) --- .gitignore | 3 ++- docs/api.md | 10 +++++++++- docs/conf.py | 4 +++- docs/generated/anndata.types.ExtensionNamespace.rst | 5 +++++ pyproject.toml | 3 ++- src/anndata/_core/extensions.py | 4 +--- src/anndata/experimental/pytorch/_annloader.py | 9 +++------ 7 files changed, 25 insertions(+), 13 deletions(-) create mode 100644 docs/generated/anndata.types.ExtensionNamespace.rst diff --git a/.gitignore b/.gitignore index a168fb481..0c230a36d 100644 --- a/.gitignore +++ b/.gitignore @@ -24,8 +24,9 @@ __pycache__/ .ipynb_checkpoints # docs -/docs/generated/ /docs/_build/ +/docs/generated/* +!/docs/generated/anndata.types.ExtensionNamespace.rst # IDEs /.idea/ diff --git a/docs/api.md b/docs/api.md index 3b34585a9..4bad5fa55 100644 --- a/docs/api.md +++ b/docs/api.md @@ -217,9 +217,16 @@ Types used by the former: .. autosummary:: :toctree: generated/ - types.ExtensionNamespace + types.SupportsArrayApi + +.. toctree:: + :hidden: + + generated/anndata.types.ExtensionNamespace ``` +{class}`scverse_misc.ExtensionNamespace` + (errors-api)= ## Errors and warnings @@ -241,6 +248,7 @@ Types used by the former: settings settings.override + settings.reset ``` (types-api)= diff --git a/docs/conf.py b/docs/conf.py index 82849dd66..cc7961373 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -58,6 +58,7 @@ "sphinx_design", "sphinxext.opengraph", "scanpydoc", # needs to be before linkcode + "scverse_misc.sphinx_ext", "sphinx.ext.linkcode", "IPython.sphinxext.ipython_console_highlighting", *(p.stem for p in _extension_dir.glob("*.py")), @@ -136,11 +137,11 @@ def res( pandas=("https://pandas.pydata.org/pandas-docs/version/2.3", None), python=("https://docs.python.org/3", None), scipy=("https://docs.scipy.org/doc/scipy", None), + scverse_misc=("https://scverse-misc.readthedocs.io/stable", None), sklearn=("https://scikit-learn.org/stable", None), xarray=("https://docs.xarray.dev/en/stable", None), zarr=("https://zarr.readthedocs.io/en/stable/", None), zarrs=("https://zarrs-python.readthedocs.io/en/stable/", None), - scverse_misc=("https://scverse-misc.readthedocs.io/stable", None), annbatch=("https://annbatch.readthedocs.io/en/stable/", None), ) @@ -175,6 +176,7 @@ def res( "awkward.highlevel.Array": "ak.Array", "numpy.int64": ("py:attr", "numpy.int64"), "numpy.dtypes.StringDType": ("py:attr", "numpy.dtypes.StringDType"), + "numpy._typing._array_like.NDArray": ("py:data", "numpy.typing.NDArray"), "pandas.DataFrame.iloc": ("py:attr", "pandas.DataFrame.iloc"), "pandas.DataFrame.loc": ("py:attr", "pandas.DataFrame.loc"), "pandas.core.series.Series": "pandas.Series", diff --git a/docs/generated/anndata.types.ExtensionNamespace.rst b/docs/generated/anndata.types.ExtensionNamespace.rst new file mode 100644 index 000000000..2f1b23f50 --- /dev/null +++ b/docs/generated/anndata.types.ExtensionNamespace.rst @@ -0,0 +1,5 @@ +anndata.types.ExtensionNamespace +================================ + +.. version-deprecated:: 0.13.0 + Use :class:`scverse_misc.ExtensionNamespace` instead diff --git a/pyproject.toml b/pyproject.toml index 9d2e4847f..48521f9e6 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,7 +47,7 @@ dependencies = [ "array_api_compat>=1.7.1", "legacy-api-wrap", "zarr >=2.18.7, !=3.0.*", - "scverse-misc>=0.0.3", + "scverse-misc>=0.1.0", ] dynamic = [ "version" ] @@ -70,6 +70,7 @@ doc = [ "sphinxext.opengraph", "myst-nb", "scanpydoc[theme,typehints] >=0.17.1", + "scverse-misc[sphinx]", "awkward>=2.6.3", "IPython", # For syntax highlighting in notebooks "myst-parser", diff --git a/src/anndata/_core/extensions.py b/src/anndata/_core/extensions.py index 9835c0e9d..bb555858b 100644 --- a/src/anndata/_core/extensions.py +++ b/src/anndata/_core/extensions.py @@ -7,6 +7,4 @@ __all__ = ["register_anndata_namespace"] -register_anndata_namespace = make_register_namespace_decorator( - AnnData, "adata", "register_anndata_namespace", "numpy" -) +register_anndata_namespace = make_register_namespace_decorator(AnnData, "adata") diff --git a/src/anndata/experimental/pytorch/_annloader.py b/src/anndata/experimental/pytorch/_annloader.py index 2262ae0b8..7356bd122 100644 --- a/src/anndata/experimental/pytorch/_annloader.py +++ b/src/anndata/experimental/pytorch/_annloader.py @@ -120,6 +120,9 @@ def compose_convert(arr): # AnnLoader has the same arguments as DataLoader, but uses BatchIndexSampler by default +@deprecated( + Deprecation("0.12.17", "Use :class:`annbatch.Loader` instead of `AnnLoader`") +) class AnnLoader(DataLoader): """\ PyTorch DataLoader for AnnData objects. @@ -128,9 +131,6 @@ class AnnLoader(DataLoader): :class:`~anndata.experimental.AnnCollection` object or from an `AnnCollectionView` object. Takes care of the required conversions. - .. deprecated:: 0.12.17 - Use :class:`annbatch.Loader` instead. - Parameters ---------- adatas @@ -152,9 +152,6 @@ class AnnLoader(DataLoader): arguments for `AnnCollection` initialization. """ - @deprecated( - Deprecation("0.12.17", "Use {class}`annbatch.Loader` instead of `AnnLoader`") - ) @old_positionals("batch_size", "shuffle", "use_default_converter", "use_cuda") def __init__( self, From d7e30b51c1d0227dc133eec64d1ad9216cd2d795 Mon Sep 17 00:00:00 2001 From: ilan-gold Date: Mon, 22 Jun 2026 15:52:32 +0200 Subject: [PATCH 2/6] oops --- docs/api.md | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/api.md b/docs/api.md index 4bad5fa55..a4661352d 100644 --- a/docs/api.md +++ b/docs/api.md @@ -214,11 +214,6 @@ Types used by the former: Types used by the former: ```{eval-rst} -.. autosummary:: - :toctree: generated/ - - types.SupportsArrayApi - .. toctree:: :hidden: From 035f9eb66fd586b1f6ff47ee7600a287cfbb98d5 Mon Sep 17 00:00:00 2001 From: ilan-gold Date: Mon, 22 Jun 2026 16:12:11 +0200 Subject: [PATCH 3/6] fix: `GenericAlias` --- docs/conf.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/conf.py b/docs/conf.py index cc7961373..619e16242 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -177,6 +177,9 @@ def res( "numpy.int64": ("py:attr", "numpy.int64"), "numpy.dtypes.StringDType": ("py:attr", "numpy.dtypes.StringDType"), "numpy._typing._array_like.NDArray": ("py:data", "numpy.typing.NDArray"), + # For some reason after https://github.com/numpy/numpy/commit/cc5aaf2cc744dfbc0a16c1d20607853874307333 + # sphinx is still looking for this type here even though our min bound is 1.26 + "numpy._typing._array_like.GenericAlias": ("py:data", "types.GenericAlias"), "pandas.DataFrame.iloc": ("py:attr", "pandas.DataFrame.iloc"), "pandas.DataFrame.loc": ("py:attr", "pandas.DataFrame.loc"), "pandas.core.series.Series": "pandas.Series", From a4743419590070f90cc9e9bd546996a777688c1d Mon Sep 17 00:00:00 2001 From: ilan-gold Date: Mon, 22 Jun 2026 16:41:06 +0200 Subject: [PATCH 4/6] fix: decorator --- src/anndata/_core/extensions.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/anndata/_core/extensions.py b/src/anndata/_core/extensions.py index bb555858b..ed33996df 100644 --- a/src/anndata/_core/extensions.py +++ b/src/anndata/_core/extensions.py @@ -1,5 +1,8 @@ from __future__ import annotations +import sys +import warnings + from scverse_misc import make_register_namespace_decorator from .anndata import AnnData @@ -7,4 +10,15 @@ __all__ = ["register_anndata_namespace"] -register_anndata_namespace = make_register_namespace_decorator(AnnData, "adata") +if sys.version_info >= (3, 12): + register_anndata_namespace = make_register_namespace_decorator(AnnData, "adata") +else: + with warnings.catch_warnings(): + warnings.filterwarnings( + "ignore", + r".*argument is deprecated and will be removed in the future", + DeprecationWarning, + ) + register_anndata_namespace = make_register_namespace_decorator( + AnnData, "adata", "register_anndata_namespace", "numpy" + ) From abd38a0bcb1abb9e929e201119cccb45321b7658 Mon Sep 17 00:00:00 2001 From: ilan-gold Date: Mon, 22 Jun 2026 16:42:40 +0200 Subject: [PATCH 5/6] fix: version --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 48521f9e6..3f146b208 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,7 +47,7 @@ dependencies = [ "array_api_compat>=1.7.1", "legacy-api-wrap", "zarr >=2.18.7, !=3.0.*", - "scverse-misc>=0.1.0", + "scverse-misc>=0.0.3", ] dynamic = [ "version" ] From 13121e4933b23976cadbb949e7bb5f86be651829 Mon Sep 17 00:00:00 2001 From: ilan-gold Date: Mon, 22 Jun 2026 17:10:53 +0200 Subject: [PATCH 6/6] maybe? --- docs/conf.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/conf.py b/docs/conf.py index 619e16242..c046f30bf 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -179,7 +179,7 @@ def res( "numpy._typing._array_like.NDArray": ("py:data", "numpy.typing.NDArray"), # For some reason after https://github.com/numpy/numpy/commit/cc5aaf2cc744dfbc0a16c1d20607853874307333 # sphinx is still looking for this type here even though our min bound is 1.26 - "numpy._typing._array_like.GenericAlias": ("py:data", "types.GenericAlias"), + "numpy._typing._array_like.GenericAlias": ("py:class", "types.GenericAlias"), "pandas.DataFrame.iloc": ("py:attr", "pandas.DataFrame.iloc"), "pandas.DataFrame.loc": ("py:attr", "pandas.DataFrame.loc"), "pandas.core.series.Series": "pandas.Series",