Clone of https://github.com/NixOS/nixpkgs.git (to stress-test knotserver)
1{
2 array-api-compat,
3 awkward,
4 boltons,
5 buildPythonPackage,
6 dask,
7 distributed,
8 fetchFromGitHub,
9 filelock,
10 h5py,
11 hatch-vcs,
12 hatchling,
13 joblib,
14 lib,
15 natsort,
16 numba,
17 numpy,
18 openpyxl,
19 packaging,
20 pandas,
21 pyarrow,
22 pytest-mock,
23 pytest-xdist,
24 pytestCheckHook,
25 pythonOlder,
26 scikit-learn,
27 scipy,
28 stdenv,
29 typing-extensions,
30 zarr,
31}:
32
33buildPythonPackage rec {
34 pname = "anndata";
35 version = "0.12.1";
36 pyproject = true;
37
38 src = fetchFromGitHub {
39 owner = "scverse";
40 repo = "anndata";
41 tag = version;
42 hash = "sha256-vxyRJ77PIkRIyl4aTQggXSQVoMKLQe3mCA5H3W/wmN8=";
43 };
44
45 build-system = [
46 hatch-vcs
47 hatchling
48 ];
49
50 dependencies = [
51 array-api-compat
52 h5py
53 natsort
54 numpy
55 pandas
56 scipy
57 ];
58
59 nativeCheckInputs = [
60 awkward
61 boltons
62 dask
63 distributed
64 filelock
65 joblib
66 numba
67 openpyxl
68 pyarrow
69 pytest-mock
70 pytest-xdist
71 pytestCheckHook
72 scikit-learn
73 zarr
74 ];
75
76 # Optionally disable pytest-xdist to make it easier to debug the test suite.
77 # Test suite takes ~5 minutes without pytest-xdist. Note that some tests will
78 # fail when running without pytest-xdist ("worker_id not found").
79 # pytestFlags = [ "-oaddopts=" ];
80
81 disabledTestPaths = [
82 # Tests that require scanpy, creating a circular dependency chain
83 "src/anndata/_core/anndata.py"
84 "src/anndata/_core/merge.py"
85 "src/anndata/_core/sparse_dataset.py"
86 "src/anndata/_io/specs/registry.py"
87 "src/anndata/_io/utils.py"
88 "src/anndata/_warnings.py"
89 "src/anndata/experimental/merge.py"
90 "src/anndata/experimental/multi_files/_anncollection.py"
91 "src/anndata/utils.py"
92 ];
93
94 disabledTests = [
95 # doctests that require scanpy, creating a circular dependency chain. These
96 # do not work in disabledTestPaths for some reason.
97 "anndata._core.anndata.AnnData.concatenate"
98 "anndata._core.anndata.AnnData.obs_names_make_unique"
99 "anndata._core.anndata.AnnData.var_names_make_unique"
100 "anndata._core.merge.concat"
101 "anndata._core.merge.gen_reindexer"
102 "anndata._core.sparse_dataset.sparse_dataset"
103 "anndata._io.specs.registry.read_elem_as_dask"
104 "anndata._io.utils.report_read_key_on_error"
105 "anndata._io.utils.report_write_key_on_error"
106 "anndata._warnings.ImplicitModificationWarning"
107 "anndata.experimental.merge.concat_on_disk"
108 "anndata.experimental.multi_files._anncollection.AnnCollection"
109 "anndata.utils.make_index_unique"
110 "ci.scripts.min-deps.min_dep"
111 "concatenation.rst"
112
113 # Tests that require cupy and GPU access. Introducing cupy as a dependency
114 # would make this package unfree and GPU access is not possible within the
115 # nix build environment anyhow.
116 "test_adata_raw_gpu"
117 "test_as_cupy_dask"
118 "test_as_dask_functions"
119 "test_concat_different_types_dask"
120 "test_concat_on_var_outer_join"
121 "test_concatenate_layers_misaligned"
122 "test_concatenate_layers_outer"
123 "test_concatenate_layers"
124 "test_concatenate_roundtrip"
125 "test_dask_to_memory_unbacked"
126 "test_ellipsis_index"
127 "test_error_on_mixed_device"
128 "test_gpu"
129 "test_io_spec_cupy"
130 "test_modify_view_component"
131 "test_nan_merge"
132 "test_pairwise_concat"
133 "test_raw_gpu"
134 "test_set_scalar_subset_X"
135 "test_transposed_concat"
136 "test_view_different_type_indices"
137 "test_view_of_view"
138
139 # Tests that are seemingly broken. See https://github.com/scverse/anndata/issues/2017.
140 "test_concat_dask_sparse_matches_memory"
141 ]
142 ++ lib.optionals (stdenv.isAarch64 && stdenv.isDarwin) [
143 # RuntimeError: Cluster failed to start: [Errno 1] Operation not permitted
144 "test_dask_distributed_write"
145 "test_read_lazy_h5_cluster"
146 ];
147
148 pythonImportsCheck = [ "anndata" ];
149
150 meta = {
151 changelog = "https://github.com/scverse/anndata/blob/main/docs/release-notes/${src.tag}.md";
152 description = "Python package for handling annotated data matrices in memory and on disk";
153 homepage = "https://anndata.readthedocs.io/";
154 license = lib.licenses.bsd3;
155 maintainers = with lib.maintainers; [ samuela ];
156 };
157}