anndata 0.11.3__tar.gz → 0.12.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {anndata-0.11.3 → anndata-0.12.0}/.github/ISSUE_TEMPLATE/bug-report.yml +10 -2
- anndata-0.12.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- anndata-0.12.0/.github/ISSUE_TEMPLATE/question.yml +14 -0
- {anndata-0.11.3 → anndata-0.12.0}/.github/workflows/benchmark.yml +7 -3
- {anndata-0.11.3 → anndata-0.12.0}/.github/workflows/codespell.yml +5 -4
- {anndata-0.11.3 → anndata-0.12.0}/.github/workflows/publish.yml +3 -0
- anndata-0.12.0/.github/workflows/test-cpu.yml +125 -0
- {anndata-0.11.3 → anndata-0.12.0}/.github/workflows/test-gpu.yml +16 -9
- {anndata-0.11.3 → anndata-0.12.0}/.gitignore +2 -2
- {anndata-0.11.3 → anndata-0.12.0}/.pre-commit-config.yaml +13 -9
- {anndata-0.11.3 → anndata-0.12.0}/.readthedocs.yml +1 -1
- anndata-0.12.0/.taplo.toml +5 -0
- anndata-0.12.0/.vscode/launch.json +26 -0
- anndata-0.12.0/.vscode/settings.json +27 -0
- {anndata-0.11.3 → anndata-0.12.0}/LICENSE +2 -1
- {anndata-0.11.3 → anndata-0.12.0}/PKG-INFO +60 -32
- {anndata-0.11.3 → anndata-0.12.0}/README.md +5 -4
- {anndata-0.11.3 → anndata-0.12.0}/benchmarks/asv.conf.json +1 -23
- {anndata-0.11.3 → anndata-0.12.0}/benchmarks/benchmarks/anndata.py +8 -2
- {anndata-0.11.3 → anndata-0.12.0}/benchmarks/benchmarks/readwrite.py +9 -8
- {anndata-0.11.3 → anndata-0.12.0}/benchmarks/benchmarks/sparse_dataset.py +15 -11
- {anndata-0.11.3 → anndata-0.12.0}/benchmarks/benchmarks/utils.py +2 -19
- anndata-0.12.0/biome.jsonc +18 -0
- {anndata-0.11.3 → anndata-0.12.0}/ci/scripts/min-deps.py +17 -11
- {anndata-0.11.3 → anndata-0.12.0}/docs/api.md +55 -2
- {anndata-0.11.3 → anndata-0.12.0}/docs/conf.py +64 -35
- anndata-0.12.0/docs/extensions/autosummary_skip_inherited.py +55 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/extensions/no_skip_abc_members.py +2 -2
- {anndata-0.11.3 → anndata-0.12.0}/docs/fileformat-prose.md +1 -1
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.11.0.md +1 -1
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.11.1.md +2 -2
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.11.2.md +1 -1
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.11.3.md +1 -1
- anndata-0.12.0/docs/release-notes/0.11.4.md +14 -0
- anndata-0.12.0/docs/release-notes/0.12.0.md +6 -0
- anndata-0.12.0/docs/release-notes/0.12.0rc1.md +26 -0
- anndata-0.12.0/docs/release-notes/0.12.0rc2.md +14 -0
- anndata-0.12.0/docs/release-notes/0.12.0rc3.md +6 -0
- anndata-0.12.0/docs/release-notes/0.12.0rc4.md +19 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/tutorials/index.md +2 -0
- anndata-0.12.0/docs/tutorials/zarr-v3.md +122 -0
- anndata-0.12.0/hatch.toml +41 -0
- {anndata-0.11.3 → anndata-0.12.0}/pyproject.toml +105 -79
- anndata-0.12.0/src/anndata/__init__.py +65 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/access.py +1 -1
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/aligned_df.py +51 -8
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/aligned_mapping.py +13 -8
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/anndata.py +302 -203
- anndata-0.12.0/src/anndata/_core/extensions.py +276 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/file_backing.py +22 -12
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/index.py +37 -26
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/merge.py +503 -130
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/raw.py +8 -10
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/sparse_dataset.py +101 -62
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/storage.py +20 -12
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/views.py +23 -9
- anndata-0.12.0/src/anndata/_core/xarray.py +404 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_io/__init__.py +3 -3
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_io/h5ad.py +34 -31
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_io/read.py +60 -37
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_io/specs/__init__.py +8 -8
- anndata-0.12.0/src/anndata/_io/specs/lazy_methods.py +370 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_io/specs/methods.py +256 -89
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_io/specs/registry.py +76 -42
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_io/utils.py +41 -24
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_io/write.py +29 -17
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_io/zarr.py +40 -19
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_settings.py +71 -40
- anndata-0.12.0/src/anndata/_settings.pyi +49 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_types.py +67 -40
- anndata-0.12.0/src/anndata/_version.py +62 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_warnings.py +0 -6
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/abc.py +5 -6
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/compat/__init__.py +74 -128
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/experimental/__init__.py +23 -9
- anndata-0.12.0/src/anndata/experimental/backed/__init__.py +7 -0
- anndata-0.12.0/src/anndata/experimental/backed/_compat.py +18 -0
- anndata-0.12.0/src/anndata/experimental/backed/_io.py +156 -0
- anndata-0.12.0/src/anndata/experimental/backed/_lazy_arrays.py +197 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/experimental/merge.py +56 -48
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/experimental/multi_files/_anncollection.py +55 -57
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/experimental/pytorch/_annloader.py +40 -16
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/io.py +4 -17
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/logging.py +12 -7
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/tests/helpers.py +246 -166
- anndata-0.12.0/src/anndata/types.py +22 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/typing.py +9 -10
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/utils.py +47 -33
- anndata-0.12.0/src/testing/anndata/_doctest.py +16 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/testing/anndata/_pytest.py +13 -17
- anndata-0.12.0/src/testing/anndata/py.typed +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/conftest.py +69 -1
- anndata-0.12.0/tests/lazy/conftest.py +260 -0
- anndata-0.12.0/tests/lazy/test_concat.py +323 -0
- anndata-0.12.0/tests/lazy/test_read.py +184 -0
- anndata-0.12.0/tests/lazy/test_write.py +46 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_awkward.py +2 -1
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_backed_dense.py +2 -6
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_backed_hdf5.py +15 -9
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_backed_sparse.py +107 -92
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_base.py +62 -29
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_concatenate.py +247 -89
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_concatenate_disk.py +18 -12
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_dask.py +17 -10
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_dask_view_mem.py +5 -7
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_deprecations.py +9 -20
- anndata-0.12.0/tests/test_extensions.py +229 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_helpers.py +4 -35
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_io_backwards_compat.py +7 -7
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_io_conversion.py +7 -6
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_io_dispatched.py +78 -40
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_io_elementwise.py +106 -87
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_io_partial.py +25 -20
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_io_utils.py +5 -9
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_io_warnings.py +14 -20
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_layers.py +23 -16
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_obsmvarm.py +27 -1
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_readwrite.py +212 -71
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_repr.py +1 -1
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_settings.py +50 -27
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_structured_arrays.py +6 -9
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_transpose.py +1 -3
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_utils.py +4 -2
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_views.py +17 -23
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_x.py +17 -16
- anndata-0.12.0/tests/test_xarray.py +320 -0
- anndata-0.11.3/.azure-pipelines.yml +0 -129
- anndata-0.11.3/.github/ISSUE_TEMPLATE/config.yml +0 -8
- anndata-0.11.3/hatch.toml +0 -34
- anndata-0.11.3/src/anndata/__init__.py +0 -98
- anndata-0.11.3/src/anndata/_io/specs/lazy_methods.py +0 -184
- anndata-0.11.3/src/anndata/_version.py +0 -16
- anndata-0.11.3/src/anndata/compat/exceptiongroups.py +0 -14
- {anndata-0.11.3 → anndata-0.12.0}/.cirun.yml +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/.codecov.yml +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/.editorconfig +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/.github/ISSUE_TEMPLATE/enhancement-request.yml +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/.github/workflows/check-pr-milestoned.yml +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/.github/workflows/close-stale.yml +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/.github/workflows/label-stale.yml +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/.gitmodules +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/.prettierignore +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/.prettierrc.yaml +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/benchmarks/README.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/benchmarks/benchmarks/__init__.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/ci/constraints.txt +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/ci/scripts/towncrier_automation.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/Makefile +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/_key_contributors.rst +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/_static/img/anndata_schema.svg +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/_templates/autosummary/class.rst +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/benchmark-read-write.ipynb +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/benchmarks.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/concatenation.rst +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/contributing.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/extensions/patch_myst_cite.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/index.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/interoperability.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/news.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/references.rst +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.10.0.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.10.1.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.10.2.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.10.3.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.10.4.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.10.5.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.10.6.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.10.7.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.10.8.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.10.9.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.4.0.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.5.0.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.6.0.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.6.x.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.7.0.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.7.2.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.7.3.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.7.4.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.7.5.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.7.6.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.7.7.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.7.8.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.8.0.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.9.0.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.9.1.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/0.9.2.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/docs/release-notes/index.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/_core/__init__.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/experimental/_dispatch_io.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/experimental/multi_files/__init__.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/src/anndata/experimental/pytorch/__init__.py +0 -0
- {anndata-0.11.3/src/testing/anndata → anndata-0.12.0/src/anndata/tests}/__init__.py +0 -0
- /anndata-0.11.3/src/testing/anndata/py.typed → /anndata-0.12.0/src/testing/anndata/__init__.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/data/adata-comments.tsv +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/data/adata.csv +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/data/archives/readme.md +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/data/archives/v0.7.0/adata.h5ad +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/data/archives/v0.7.0/adata.zarr.zip +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/data/archives/v0.7.8/adata.h5ad +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/data/archives/v0.7.8/adata.zarr.zip +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/data/excel.xlsx +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/data/umi_tools.tsv.gz +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_anncollection.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_annot.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_get_vector.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_gpu.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_inplace_subset.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_obspvarp.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_raw.py +0 -0
- {anndata-0.11.3 → anndata-0.12.0}/tests/test_uns.py +0 -0
|
@@ -53,10 +53,18 @@ body:
|
|
|
53
53
|
description: |
|
|
54
54
|
Which version of anndata and other related software you used.
|
|
55
55
|
|
|
56
|
-
Please install `session-
|
|
56
|
+
Please install `session-info2`, run the following command in a notebook,
|
|
57
|
+
click the “Copy as Markdown” button,
|
|
58
|
+
then paste the results into the text box below.
|
|
57
59
|
|
|
58
60
|
```python
|
|
59
|
-
|
|
61
|
+
In[1]: import anndata, session_info2; session_info2.session_info(dependencies=True)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Alternatively, run this in a console:
|
|
65
|
+
|
|
66
|
+
```python
|
|
67
|
+
>>> import session_info2; print(session_info2.session_info(dependencies=True)._repr_mimebundle_()["text/markdown"])
|
|
60
68
|
```
|
|
61
69
|
render: python
|
|
62
70
|
validations:
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
name: Technical question
|
|
2
|
+
description: You wonder about a design decision or implementation detail?
|
|
3
|
+
#title: ...
|
|
4
|
+
labels:
|
|
5
|
+
- question
|
|
6
|
+
#assignees: []
|
|
7
|
+
body:
|
|
8
|
+
- type: textarea
|
|
9
|
+
id: description
|
|
10
|
+
attributes:
|
|
11
|
+
label: Question
|
|
12
|
+
description: If you have *usage* question, please visit the [Scverse Community Forum](https://discourse.scverse.org/) instead.
|
|
13
|
+
validations:
|
|
14
|
+
required: true
|
|
@@ -6,12 +6,16 @@ on:
|
|
|
6
6
|
pull_request:
|
|
7
7
|
branches: [main]
|
|
8
8
|
|
|
9
|
+
env:
|
|
10
|
+
FORCE_COLOR: "1"
|
|
11
|
+
|
|
12
|
+
defaults:
|
|
13
|
+
run:
|
|
14
|
+
shell: bash -el {0}
|
|
15
|
+
|
|
9
16
|
jobs:
|
|
10
17
|
benchmark:
|
|
11
18
|
runs-on: ${{ matrix.os }}
|
|
12
|
-
defaults:
|
|
13
|
-
run:
|
|
14
|
-
shell: bash -el {0} # -e to fail on error, -l for mamba
|
|
15
19
|
|
|
16
20
|
strategy:
|
|
17
21
|
fail-fast: false
|
|
@@ -16,7 +16,8 @@ jobs:
|
|
|
16
16
|
runs-on: ubuntu-latest
|
|
17
17
|
|
|
18
18
|
steps:
|
|
19
|
-
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
with:
|
|
21
|
+
fetch-depth: 0
|
|
22
|
+
filter: blob:none
|
|
23
|
+
- uses: codespell-project/actions-codespell@v2
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches:
|
|
6
|
+
- main
|
|
7
|
+
- "[0-9]+.[0-9]+.x"
|
|
8
|
+
pull_request:
|
|
9
|
+
|
|
10
|
+
env:
|
|
11
|
+
FORCE_COLOR: "1"
|
|
12
|
+
|
|
13
|
+
defaults:
|
|
14
|
+
run:
|
|
15
|
+
shell: bash -el {0}
|
|
16
|
+
|
|
17
|
+
# Cancel the job if new commits are pushed
|
|
18
|
+
# https://stackoverflow.com/questions/66335225/how-to-cancel-previous-runs-in-the-pr-when-you-push-new-commitsupdate-the-curre
|
|
19
|
+
concurrency:
|
|
20
|
+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
|
|
21
|
+
cancel-in-progress: true
|
|
22
|
+
|
|
23
|
+
jobs:
|
|
24
|
+
get-environments:
|
|
25
|
+
runs-on: ubuntu-latest
|
|
26
|
+
outputs:
|
|
27
|
+
envs: ${{ steps.get-envs.outputs.envs }}
|
|
28
|
+
steps:
|
|
29
|
+
- uses: actions/checkout@v4
|
|
30
|
+
with:
|
|
31
|
+
filter: blob:none
|
|
32
|
+
fetch-depth: 0
|
|
33
|
+
- uses: astral-sh/setup-uv@v5
|
|
34
|
+
with:
|
|
35
|
+
enable-cache: false
|
|
36
|
+
- id: get-envs
|
|
37
|
+
run: |
|
|
38
|
+
ENVS_JSON=$(NO_COLOR=1 uvx hatch env show --json | jq -c 'to_entries
|
|
39
|
+
| map(
|
|
40
|
+
select(.key | startswith("hatch-test"))
|
|
41
|
+
| { name: .key, python: .value.python }
|
|
42
|
+
)')
|
|
43
|
+
echo "envs=${ENVS_JSON}" | tee $GITHUB_OUTPUT
|
|
44
|
+
test:
|
|
45
|
+
needs: get-environments
|
|
46
|
+
runs-on: ubuntu-latest
|
|
47
|
+
strategy:
|
|
48
|
+
matrix:
|
|
49
|
+
env: ${{ fromJSON(needs.get-environments.outputs.envs) }}
|
|
50
|
+
io_mark: ["zarr_io", "not zarr_io"]
|
|
51
|
+
env: # environment variable for use in codecov’s env_vars tagging
|
|
52
|
+
ENV_NAME: ${{ matrix.env.name }}
|
|
53
|
+
steps:
|
|
54
|
+
- uses: actions/checkout@v4
|
|
55
|
+
with:
|
|
56
|
+
fetch-depth: 0
|
|
57
|
+
filter: blob:none
|
|
58
|
+
|
|
59
|
+
- name: Set up Python ${{ matrix.env.python }}
|
|
60
|
+
uses: actions/setup-python@v5
|
|
61
|
+
with:
|
|
62
|
+
python-version: ${{ matrix.env.python }}
|
|
63
|
+
|
|
64
|
+
- name: Install UV
|
|
65
|
+
uses: astral-sh/setup-uv@v5
|
|
66
|
+
with:
|
|
67
|
+
enable-cache: true
|
|
68
|
+
cache-dependency-glob: pyproject.toml
|
|
69
|
+
|
|
70
|
+
- name: Install dependencies
|
|
71
|
+
run: uvx hatch -v env create ${{ matrix.env.name }}
|
|
72
|
+
|
|
73
|
+
- name: Run tests
|
|
74
|
+
run: uvx hatch run ${{ matrix.env.name }}:run-cov -v --color=yes -n auto --cov --cov-report=xml --junitxml=test-data/test-results.xml -m "${{matrix.io_mark}}"
|
|
75
|
+
|
|
76
|
+
- name: Upload coverage data
|
|
77
|
+
uses: codecov/codecov-action@v5
|
|
78
|
+
with:
|
|
79
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
80
|
+
env_vars: ENV_NAME
|
|
81
|
+
fail_ci_if_error: true
|
|
82
|
+
files: test-data/coverage.xml
|
|
83
|
+
|
|
84
|
+
build:
|
|
85
|
+
runs-on: ubuntu-22.04
|
|
86
|
+
steps:
|
|
87
|
+
- uses: actions/checkout@v4
|
|
88
|
+
with:
|
|
89
|
+
fetch-depth: 0
|
|
90
|
+
filter: blob:none
|
|
91
|
+
|
|
92
|
+
- name: Set up Python 3.13
|
|
93
|
+
uses: actions/setup-python@v5
|
|
94
|
+
with:
|
|
95
|
+
python-version: '3.13'
|
|
96
|
+
|
|
97
|
+
- name: Install build tools and requirements
|
|
98
|
+
run: |
|
|
99
|
+
python -m pip install --upgrade pip
|
|
100
|
+
pip install build twine
|
|
101
|
+
|
|
102
|
+
- name: Display installed versions
|
|
103
|
+
run: pip list
|
|
104
|
+
|
|
105
|
+
- name: Build & Twine check
|
|
106
|
+
run: |
|
|
107
|
+
python -m build --sdist --wheel .
|
|
108
|
+
twine check dist/*
|
|
109
|
+
|
|
110
|
+
- name: Check runtime version
|
|
111
|
+
run: |
|
|
112
|
+
pip install dist/*.whl
|
|
113
|
+
python -c 'import anndata; print(anndata.__version__)'
|
|
114
|
+
|
|
115
|
+
check:
|
|
116
|
+
if: always()
|
|
117
|
+
needs:
|
|
118
|
+
- get-environments
|
|
119
|
+
- test
|
|
120
|
+
- build
|
|
121
|
+
runs-on: ubuntu-latest
|
|
122
|
+
steps:
|
|
123
|
+
- uses: re-actors/alls-green@release/v1
|
|
124
|
+
with:
|
|
125
|
+
jobs: ${{ toJSON(needs) }}
|
|
@@ -9,6 +9,14 @@ on:
|
|
|
9
9
|
- opened
|
|
10
10
|
- synchronize
|
|
11
11
|
|
|
12
|
+
env:
|
|
13
|
+
PYTEST_ADDOPTS: "-v --color=yes"
|
|
14
|
+
FORCE_COLOR: "1"
|
|
15
|
+
|
|
16
|
+
defaults:
|
|
17
|
+
run:
|
|
18
|
+
shell: bash -el {0}
|
|
19
|
+
|
|
12
20
|
# Cancel the job if new commits are pushed
|
|
13
21
|
# https://stackoverflow.com/questions/66335225/how-to-cancel-previous-runs-in-the-pr-when-you-push-new-commitsupdate-the-curre
|
|
14
22
|
concurrency:
|
|
@@ -39,14 +47,11 @@ jobs:
|
|
|
39
47
|
# At time of writing, a typical run takes about 5 minutes
|
|
40
48
|
timeout-minutes: 30
|
|
41
49
|
|
|
42
|
-
defaults:
|
|
43
|
-
run:
|
|
44
|
-
shell: bash -el {0}
|
|
45
|
-
|
|
46
50
|
steps:
|
|
47
51
|
- uses: actions/checkout@v4
|
|
48
52
|
with:
|
|
49
53
|
fetch-depth: 0
|
|
54
|
+
filter: blob:none
|
|
50
55
|
|
|
51
56
|
- name: Nvidia SMI sanity check
|
|
52
57
|
run: nvidia-smi
|
|
@@ -64,12 +69,14 @@ jobs:
|
|
|
64
69
|
- name: Install Python
|
|
65
70
|
uses: actions/setup-python@v5
|
|
66
71
|
with:
|
|
67
|
-
|
|
72
|
+
# https://github.com/cupy/cupy/issues/8651 cupy does not support python3.13 yet
|
|
73
|
+
python-version: "3.12"
|
|
68
74
|
|
|
69
75
|
- name: Install UV
|
|
70
|
-
uses:
|
|
76
|
+
uses: astral-sh/setup-uv@v5
|
|
71
77
|
with:
|
|
72
|
-
cache
|
|
78
|
+
enable-cache: true
|
|
79
|
+
cache-dependency-glob: pyproject.toml
|
|
73
80
|
|
|
74
81
|
- name: Install AnnData
|
|
75
82
|
run: uv pip install --system -e ".[dev,test,cu12]" -c ci/constraints.txt
|
|
@@ -78,13 +85,13 @@ jobs:
|
|
|
78
85
|
run: pip list
|
|
79
86
|
|
|
80
87
|
- name: Run test
|
|
81
|
-
run: pytest -m gpu --cov --cov-report=xml
|
|
88
|
+
run: coverage run -m pytest -m gpu -n auto --cov --cov-report=xml
|
|
82
89
|
|
|
83
90
|
- uses: codecov/codecov-action@v4
|
|
84
91
|
with:
|
|
85
92
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
86
93
|
fail_ci_if_error: true
|
|
87
|
-
|
|
94
|
+
files: test-data/coverage.xml
|
|
88
95
|
|
|
89
96
|
- name: Remove 'run-gpu-ci' Label
|
|
90
97
|
if: always()
|
|
@@ -7,11 +7,12 @@ __pycache__/
|
|
|
7
7
|
/*cache/
|
|
8
8
|
/node_modules/
|
|
9
9
|
/data/
|
|
10
|
+
/venv/
|
|
10
11
|
|
|
11
12
|
# Distribution / packaging
|
|
12
13
|
/dist/
|
|
13
14
|
/ci/min-deps.txt
|
|
14
|
-
/
|
|
15
|
+
/ci/pre-deps.txt
|
|
15
16
|
/requirements*.lock
|
|
16
17
|
/.python-version
|
|
17
18
|
|
|
@@ -28,7 +29,6 @@ __pycache__/
|
|
|
28
29
|
|
|
29
30
|
# IDEs
|
|
30
31
|
/.idea/
|
|
31
|
-
/.vscode/
|
|
32
32
|
|
|
33
33
|
# Benchmark
|
|
34
34
|
.asv
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
repos:
|
|
2
2
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
3
|
-
rev: v0.
|
|
3
|
+
rev: v0.12.3
|
|
4
4
|
hooks:
|
|
5
5
|
- id: ruff
|
|
6
|
-
types_or: [python, pyi, jupyter]
|
|
7
6
|
args: ["--fix"]
|
|
8
7
|
- id: ruff-format
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
# The following can be removed once PLR0917 is out of preview
|
|
9
|
+
- name: ruff preview rules
|
|
10
|
+
id: ruff
|
|
11
|
+
args: ["--preview", "--select=PLR0917"]
|
|
12
|
+
- repo: https://github.com/biomejs/pre-commit
|
|
13
|
+
rev: v2.1.1
|
|
12
14
|
hooks:
|
|
13
|
-
- id:
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
- id: biome-format
|
|
16
|
+
- repo: https://github.com/ComPWA/taplo-pre-commit
|
|
17
|
+
rev: v0.9.3
|
|
18
|
+
hooks:
|
|
19
|
+
- id: taplo-format
|
|
16
20
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
17
21
|
rev: v5.0.0
|
|
18
22
|
hooks:
|
|
@@ -27,7 +31,7 @@ repos:
|
|
|
27
31
|
- id: no-commit-to-branch
|
|
28
32
|
args: ["--branch=main"]
|
|
29
33
|
- repo: https://github.com/codespell-project/codespell
|
|
30
|
-
rev: v2.
|
|
34
|
+
rev: v2.4.1
|
|
31
35
|
hooks:
|
|
32
36
|
- id: codespell
|
|
33
37
|
additional_dependencies:
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": "0.2.0",
|
|
3
|
+
"configurations": [
|
|
4
|
+
{
|
|
5
|
+
"name": "Python: Build Docs",
|
|
6
|
+
"type": "debugpy",
|
|
7
|
+
"request": "launch",
|
|
8
|
+
"module": "sphinx",
|
|
9
|
+
"args": ["-M", "html", ".", "_build"],
|
|
10
|
+
"cwd": "${workspaceFolder}/docs",
|
|
11
|
+
"console": "internalConsole",
|
|
12
|
+
"justMyCode": false,
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "Python: Debug Test",
|
|
16
|
+
"type": "debugpy",
|
|
17
|
+
"request": "launch",
|
|
18
|
+
"program": "${file}",
|
|
19
|
+
"purpose": ["debug-test"],
|
|
20
|
+
"console": "internalConsole",
|
|
21
|
+
"justMyCode": false,
|
|
22
|
+
"env": { "PYTEST_ADDOPTS": "--color=yes" },
|
|
23
|
+
"presentation": { "hidden": true },
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"[python][toml][json][jsonc]": {
|
|
3
|
+
"editor.formatOnSave": true,
|
|
4
|
+
"editor.codeActionsOnSave": {
|
|
5
|
+
"source.organizeImports": "explicit",
|
|
6
|
+
"source.fixAll": "explicit",
|
|
7
|
+
},
|
|
8
|
+
},
|
|
9
|
+
"[python]": {
|
|
10
|
+
"editor.defaultFormatter": "charliermarsh.ruff",
|
|
11
|
+
},
|
|
12
|
+
"[toml]": {
|
|
13
|
+
"editor.defaultFormatter": "tamasfe.even-better-toml",
|
|
14
|
+
},
|
|
15
|
+
"[json][jsonc]": {
|
|
16
|
+
"editor.defaultFormatter": "biomejs.biome",
|
|
17
|
+
},
|
|
18
|
+
"python.analysis.typeCheckingMode": "basic",
|
|
19
|
+
"python.testing.pytestEnabled": true,
|
|
20
|
+
"python.testing.pytestArgs": [
|
|
21
|
+
"--color=yes",
|
|
22
|
+
"-vv",
|
|
23
|
+
"--strict-warnings",
|
|
24
|
+
//"-nauto",
|
|
25
|
+
],
|
|
26
|
+
"python.terminal.activateEnvironment": true,
|
|
27
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
BSD 3-Clause License
|
|
2
2
|
|
|
3
|
-
Copyright (c)
|
|
3
|
+
Copyright (c) 2025, scverse®
|
|
4
|
+
Copyright (c) 2017-2018, P. Angerer, F. Alexander Wolf, Theis Lab
|
|
4
5
|
All rights reserved.
|
|
5
6
|
|
|
6
7
|
Redistribution and use in source and binary forms, with or without
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: anndata
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.0
|
|
4
4
|
Summary: Annotated data.
|
|
5
5
|
Project-URL: Documentation, https://anndata.readthedocs.io/
|
|
6
6
|
Project-URL: Source, https://github.com/scverse/anndata
|
|
7
7
|
Project-URL: Home-page, https://github.com/scverse/anndata
|
|
8
8
|
Author: Philipp Angerer, Alex Wolf, Isaac Virshup, Sergei Rybakov
|
|
9
|
-
Maintainer-email: Isaac Virshup <ivirshup@gmail.com>, Philipp Angerer <philipp.angerer@helmholtz-munich.de>,
|
|
9
|
+
Maintainer-email: Isaac Virshup <ivirshup@gmail.com>, Philipp Angerer <philipp.angerer@helmholtz-munich.de>, Ilan Gold <ilan.gold@helmholtz-munich.de>
|
|
10
10
|
License-Expression: BSD-3-Clause
|
|
11
11
|
License-File: LICENSE
|
|
12
12
|
Classifier: Environment :: Console
|
|
@@ -18,74 +18,101 @@ Classifier: Operating System :: MacOS :: MacOS X
|
|
|
18
18
|
Classifier: Operating System :: Microsoft :: Windows
|
|
19
19
|
Classifier: Operating System :: POSIX :: Linux
|
|
20
20
|
Classifier: Programming Language :: Python :: 3
|
|
21
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
22
21
|
Classifier: Programming Language :: Python :: 3.11
|
|
23
22
|
Classifier: Programming Language :: Python :: 3.12
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
24
24
|
Classifier: Topic :: Scientific/Engineering :: Bio-Informatics
|
|
25
25
|
Classifier: Topic :: Scientific/Engineering :: Visualization
|
|
26
|
-
Requires-Python: >=3.
|
|
27
|
-
Requires-Dist: array-api-compat
|
|
28
|
-
Requires-Dist:
|
|
29
|
-
Requires-Dist:
|
|
26
|
+
Requires-Python: >=3.11
|
|
27
|
+
Requires-Dist: array-api-compat>=1.7.1
|
|
28
|
+
Requires-Dist: h5py>=3.8
|
|
29
|
+
Requires-Dist: legacy-api-wrap
|
|
30
30
|
Requires-Dist: natsort
|
|
31
|
-
Requires-Dist: numpy>=1.
|
|
32
|
-
Requires-Dist: packaging>=
|
|
33
|
-
Requires-Dist: pandas!=2.1.
|
|
34
|
-
Requires-Dist: scipy
|
|
31
|
+
Requires-Dist: numpy>=1.26
|
|
32
|
+
Requires-Dist: packaging>=24.2
|
|
33
|
+
Requires-Dist: pandas!=2.1.2,>=2.1.0
|
|
34
|
+
Requires-Dist: scipy>=1.12
|
|
35
|
+
Requires-Dist: zarr!=3.0.*,>=2.18.7
|
|
35
36
|
Provides-Extra: cu11
|
|
36
37
|
Requires-Dist: cupy-cuda11x; extra == 'cu11'
|
|
37
38
|
Provides-Extra: cu12
|
|
38
39
|
Requires-Dist: cupy-cuda12x; extra == 'cu12'
|
|
39
40
|
Provides-Extra: dask
|
|
40
|
-
Requires-Dist: dask[array]!=2024.8.*,!=2024.9
|
|
41
|
+
Requires-Dist: dask[array]!=2024.8.*,!=2024.9.*,<2025.2.0,>=2023.5.1; extra == 'dask'
|
|
41
42
|
Provides-Extra: dev
|
|
42
|
-
Requires-Dist:
|
|
43
|
-
Requires-Dist: setuptools-scm; extra == 'dev'
|
|
43
|
+
Requires-Dist: hatch-vcs; extra == 'dev'
|
|
44
44
|
Requires-Dist: towncrier>=24.8.0; extra == 'dev'
|
|
45
45
|
Provides-Extra: dev-doc
|
|
46
46
|
Requires-Dist: towncrier>=24.8.0; extra == 'dev-doc'
|
|
47
|
-
Provides-Extra: dev-test
|
|
48
|
-
Requires-Dist: pytest-xdist; extra == 'dev-test'
|
|
49
47
|
Provides-Extra: doc
|
|
50
48
|
Requires-Dist: awkward>=2.3; extra == 'doc'
|
|
49
|
+
Requires-Dist: dask[array]!=2024.8.*,!=2024.9.*,<2025.2.0,>=2023.5.1; extra == 'doc'
|
|
51
50
|
Requires-Dist: ipython; extra == 'doc'
|
|
51
|
+
Requires-Dist: myst-nb; extra == 'doc'
|
|
52
52
|
Requires-Dist: myst-parser; extra == 'doc'
|
|
53
|
-
Requires-Dist:
|
|
54
|
-
Requires-Dist: readthedocs-sphinx-search; extra == 'doc'
|
|
55
|
-
Requires-Dist: scanpydoc[theme,typehints]>=0.14.1; extra == 'doc'
|
|
53
|
+
Requires-Dist: scanpydoc[theme,typehints]>=0.15.3; extra == 'doc'
|
|
56
54
|
Requires-Dist: sphinx-autodoc-typehints>=2.2.0; extra == 'doc'
|
|
57
55
|
Requires-Dist: sphinx-book-theme>=1.1.0; extra == 'doc'
|
|
58
56
|
Requires-Dist: sphinx-copybutton; extra == 'doc'
|
|
59
57
|
Requires-Dist: sphinx-design>=0.5.0; extra == 'doc'
|
|
60
|
-
Requires-Dist: sphinx-issues; extra == 'doc'
|
|
58
|
+
Requires-Dist: sphinx-issues>=5.0.1; extra == 'doc'
|
|
61
59
|
Requires-Dist: sphinx-toolbox>=3.8.0; extra == 'doc'
|
|
62
|
-
Requires-Dist: sphinx>=
|
|
60
|
+
Requires-Dist: sphinx>=8.2.1; extra == 'doc'
|
|
63
61
|
Requires-Dist: sphinxext-opengraph; extra == 'doc'
|
|
64
62
|
Requires-Dist: towncrier>=24.8.0; extra == 'doc'
|
|
65
|
-
Requires-Dist: zarr<3; extra == 'doc'
|
|
66
63
|
Provides-Extra: gpu
|
|
67
64
|
Requires-Dist: cupy; extra == 'gpu'
|
|
65
|
+
Provides-Extra: lazy
|
|
66
|
+
Requires-Dist: aiohttp; extra == 'lazy'
|
|
67
|
+
Requires-Dist: dask[array]!=2024.8.*,!=2024.9.*,<2025.2.0,>=2023.5.1; extra == 'lazy'
|
|
68
|
+
Requires-Dist: requests; extra == 'lazy'
|
|
69
|
+
Requires-Dist: xarray>=2025.06.1; extra == 'lazy'
|
|
68
70
|
Provides-Extra: test
|
|
69
|
-
Requires-Dist:
|
|
71
|
+
Requires-Dist: aiohttp; extra == 'test'
|
|
72
|
+
Requires-Dist: awkward>=2.3.2; extra == 'test'
|
|
70
73
|
Requires-Dist: boltons; extra == 'test'
|
|
71
|
-
Requires-Dist: dask[array]!=2024.8.*,!=2024.9
|
|
74
|
+
Requires-Dist: dask[array]!=2024.8.*,!=2024.9.*,<2025.2.0,>=2023.5.1; extra == 'test'
|
|
72
75
|
Requires-Dist: dask[distributed]; extra == 'test'
|
|
73
|
-
Requires-Dist:
|
|
76
|
+
Requires-Dist: filelock; extra == 'test'
|
|
77
|
+
Requires-Dist: httpx<1.0; extra == 'test'
|
|
74
78
|
Requires-Dist: joblib; extra == 'test'
|
|
75
79
|
Requires-Dist: loompy>=3.0.5; extra == 'test'
|
|
76
80
|
Requires-Dist: matplotlib; extra == 'test'
|
|
77
81
|
Requires-Dist: openpyxl; extra == 'test'
|
|
78
82
|
Requires-Dist: pyarrow; extra == 'test'
|
|
79
|
-
Requires-Dist: pytest-cov
|
|
83
|
+
Requires-Dist: pytest-cov; extra == 'test'
|
|
80
84
|
Requires-Dist: pytest-memray; extra == 'test'
|
|
81
85
|
Requires-Dist: pytest-mock; extra == 'test'
|
|
86
|
+
Requires-Dist: pytest-randomly; extra == 'test'
|
|
87
|
+
Requires-Dist: pytest-xdist[psutil]; extra == 'test'
|
|
82
88
|
Requires-Dist: pytest<8.3.4,>=8.2; extra == 'test'
|
|
83
|
-
Requires-Dist:
|
|
89
|
+
Requires-Dist: requests; extra == 'test'
|
|
90
|
+
Requires-Dist: scanpy>=1.10; extra == 'test'
|
|
84
91
|
Requires-Dist: scikit-learn; extra == 'test'
|
|
85
|
-
Requires-Dist:
|
|
92
|
+
Requires-Dist: xarray>=2025.06.1; extra == 'test'
|
|
93
|
+
Provides-Extra: test-min
|
|
94
|
+
Requires-Dist: awkward>=2.3.2; extra == 'test-min'
|
|
95
|
+
Requires-Dist: boltons; extra == 'test-min'
|
|
96
|
+
Requires-Dist: dask[array]!=2024.8.*,!=2024.9.*,<2025.2.0,>=2023.5.1; extra == 'test-min'
|
|
97
|
+
Requires-Dist: dask[distributed]; extra == 'test-min'
|
|
98
|
+
Requires-Dist: filelock; extra == 'test-min'
|
|
99
|
+
Requires-Dist: httpx<1.0; extra == 'test-min'
|
|
100
|
+
Requires-Dist: joblib; extra == 'test-min'
|
|
101
|
+
Requires-Dist: loompy>=3.0.5; extra == 'test-min'
|
|
102
|
+
Requires-Dist: matplotlib; extra == 'test-min'
|
|
103
|
+
Requires-Dist: openpyxl; extra == 'test-min'
|
|
104
|
+
Requires-Dist: pyarrow; extra == 'test-min'
|
|
105
|
+
Requires-Dist: pytest-cov; extra == 'test-min'
|
|
106
|
+
Requires-Dist: pytest-memray; extra == 'test-min'
|
|
107
|
+
Requires-Dist: pytest-mock; extra == 'test-min'
|
|
108
|
+
Requires-Dist: pytest-randomly; extra == 'test-min'
|
|
109
|
+
Requires-Dist: pytest-xdist[psutil]; extra == 'test-min'
|
|
110
|
+
Requires-Dist: pytest<8.3.4,>=8.2; extra == 'test-min'
|
|
111
|
+
Requires-Dist: scanpy>=1.10; extra == 'test-min'
|
|
112
|
+
Requires-Dist: scikit-learn; extra == 'test-min'
|
|
86
113
|
Description-Content-Type: text/markdown
|
|
87
114
|
|
|
88
|
-
[](https://github.com/scverse/anndata/actions)
|
|
89
116
|
[](https://anaconda.org/conda-forge/anndata)
|
|
90
117
|
[](https://codecov.io/gh/scverse/anndata)
|
|
91
118
|
[](https://anndata.readthedocs.io)
|
|
@@ -112,16 +139,17 @@ anndata is a Python package for handling annotated data matrices in memory and o
|
|
|
112
139
|
|
|
113
140
|
[//]: # (numfocus-fiscal-sponsor-attribution)
|
|
114
141
|
|
|
115
|
-
anndata is part of the scverse project ([website](https://scverse.org), [governance](https://scverse.org/about/roles)) and is fiscally sponsored by [NumFOCUS](https://numfocus.org/).
|
|
116
|
-
|
|
117
|
-
|
|
142
|
+
anndata is part of the scverse® project ([website](https://scverse.org), [governance](https://scverse.org/about/roles)) and is fiscally sponsored by [NumFOCUS](https://numfocus.org/).
|
|
143
|
+
If you like scverse® and want to support our mission, please consider making a tax-deductible [donation](https://numfocus.org/donate-to-scverse) to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs.
|
|
118
144
|
|
|
145
|
+
<div align="center">
|
|
119
146
|
<a href="https://numfocus.org/project/scverse">
|
|
120
147
|
<img
|
|
121
148
|
src="https://raw.githubusercontent.com/numfocus/templates/master/images/numfocus-logo.png"
|
|
122
149
|
width="200"
|
|
123
150
|
>
|
|
124
151
|
</a>
|
|
152
|
+
</div>
|
|
125
153
|
|
|
126
154
|
## Public API
|
|
127
155
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
[](https://github.com/scverse/anndata/actions)
|
|
2
2
|
[](https://anaconda.org/conda-forge/anndata)
|
|
3
3
|
[](https://codecov.io/gh/scverse/anndata)
|
|
4
4
|
[](https://anndata.readthedocs.io)
|
|
@@ -25,16 +25,17 @@ anndata is a Python package for handling annotated data matrices in memory and o
|
|
|
25
25
|
|
|
26
26
|
[//]: # (numfocus-fiscal-sponsor-attribution)
|
|
27
27
|
|
|
28
|
-
anndata is part of the scverse project ([website](https://scverse.org), [governance](https://scverse.org/about/roles)) and is fiscally sponsored by [NumFOCUS](https://numfocus.org/).
|
|
29
|
-
|
|
30
|
-
|
|
28
|
+
anndata is part of the scverse® project ([website](https://scverse.org), [governance](https://scverse.org/about/roles)) and is fiscally sponsored by [NumFOCUS](https://numfocus.org/).
|
|
29
|
+
If you like scverse® and want to support our mission, please consider making a tax-deductible [donation](https://numfocus.org/donate-to-scverse) to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs.
|
|
31
30
|
|
|
31
|
+
<div align="center">
|
|
32
32
|
<a href="https://numfocus.org/project/scverse">
|
|
33
33
|
<img
|
|
34
34
|
src="https://raw.githubusercontent.com/numfocus/templates/master/images/numfocus-logo.png"
|
|
35
35
|
width="200"
|
|
36
36
|
>
|
|
37
37
|
</a>
|
|
38
|
+
</div>
|
|
38
39
|
|
|
39
40
|
## Public API
|
|
40
41
|
|