Skip to content

feat: expand support for data frame likes in obsm/varm - #2606

Draft
flying-sheep wants to merge 2 commits into
mainfrom
multi-df
Draft

flying-sheep wants to merge 2 commits into
mainfrom
multi-df

Conversation

@flying-sheep

@flying-sheep flying-sheep commented Aug 13, 2026

Copy link
Copy Markdown
Member

TODO:

  • test_get.py

  • Release note not necessary because:

@codecov

codecov Bot commented Aug 13, 2026

Copy link
Copy Markdown

❌ 12 Tests Failed:

Tests completed Failed Passed Skipped
6759 12 6747 3092
View the top 3 failed test(s) by shortest run time
tests.accessors.test_get::test_get_values[A.X[:, 'gene-3']-da.array[sp.csr_array]]
Stack Traces | 0.006s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.X[:, 'gene-3']-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.076063  0.193952
gene-1   0.280817  0.592811
gene-2   0.652885  0.564440
gene-3....147215
gene-46  0.702089  0.165793
gene-47  0.730378  0.338378
gene-48  0.071448  0.711607
gene-49  0.146737  0.892962
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.layers['a'][:, 'gene-18']-da.array[sp.csr_array]]
Stack Traces | 0.006s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.layers['a'][:, 'gene-18']-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.623317  0.044975
gene-1   0.343321  0.426038
gene-2   0.416550  0.406608
gene-3....716072
gene-46  0.656801  0.338630
gene-47  0.362806  0.286924
gene-48  0.788256  0.572679
gene-49  0.394661  0.413369
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.layers['a'][:, :]-da.array[sp.csr_array]]
Stack Traces | 0.006s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.layers['a'][:, :]-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.247037  0.319157
gene-1   0.716386  0.410831
gene-2   0.151373  0.259567
gene-3....272777
gene-46  0.995696  0.249947
gene-47  0.358347  0.366528
gene-48  0.684732  0.514699
gene-49  0.573420  0.875545
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.varp['cons']['gene-46', :]-da.array[sp.csr_array]]
Stack Traces | 0.006s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.varp['cons']['gene-46', :]-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.188378  0.308945
gene-1   0.262437  0.088735
gene-2   0.450466  0.599039
gene-3....234305
gene-46  0.055712  0.003697
gene-47  0.516823  0.748021
gene-48  0.935626  0.280108
gene-49  0.448801  0.540356
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.varp['cons'][:, 'gene-46']-da.array[sp.csr_array]]
Stack Traces | 0.006s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.varp['cons'][:, 'gene-46']-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.411969  0.676735
gene-1   0.369389  0.528180
gene-2   0.428697  0.617747
gene-3....355350
gene-46  0.614815  0.045645
gene-47  0.887494  0.810827
gene-48  0.140515  0.127785
gene-49  0.911436  0.742133
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.varp['cons'][:, :]-da.array[sp.csr_array]]
Stack Traces | 0.006s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.varp['cons'][:, :]-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.927956  0.323236
gene-1   0.174057  0.576521
gene-2   0.383370  0.068068
gene-3....125800
gene-46  0.661076  0.079190
gene-47  0.632311  0.700730
gene-48  0.806157  0.128992
gene-49  0.068718  0.875626
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.test_xarray::test_true_index_dim_column_subset
Stack Traces | 0.006s run time
dataset2d = <anndata._core.xarray.Dataset2D object at 0x7f5d39cb1040>
df =   cat_unordered cat  int64  ...  nullable-bool  nullable-int32  nullable-uint8
0             x   X    -37  ...        ...>              68
9             x   h     38  ...           <NA>            <NA>            <NA>

[10 rows x 9 columns]

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mtest_true_index_dim_column_subset#x1B[39;49;00m(dataset2d, df):#x1B[90m#x1B[39;49;00m
        col_iter = #x1B[96miter#x1B[39;49;00m(dataset2d.keys())#x1B[90m#x1B[39;49;00m
        col = #x1B[96mnext#x1B[39;49;00m(col_iter)#x1B[90m#x1B[39;49;00m
        dataset2d.true_index_dim = col#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        #x1B[90m# Ensure we can actually select columns properly that are not the index column#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        cols = [#x1B[96mnext#x1B[39;49;00m(col_iter), #x1B[96mnext#x1B[39;49;00m(col_iter)]#x1B[90m#x1B[39;49;00m
>       df_expected = dataset2d[cols].to_memory()#x1B[90m#x1B[39;49;00m
                      ^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/test_xarray.py#x1B[0m:86: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[.../anndata/_core/xarray.py#x1B[0m:230: in __getitem__
    #x1B[0m*as_2d.columns,#x1B[90m#x1B[39;49;00m
     ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../anndata/_core/xarray.py#x1B[0m:293: in columns
    #x1B[0mcolumns.drop([index_key])#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = Index(['cat', 'int64'], dtype='str')
labels = array(['cat_unordered'], dtype=object), errors = 'raise'

    #x1B[0m#x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mdrop#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        #x1B[96mself#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
        labels: Index | np.ndarray | Iterable[Hashable],#x1B[90m#x1B[39;49;00m
        errors: IgnoreRaise = #x1B[33m"#x1B[39;49;00m#x1B[33mraise#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> Index:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""#x1B[39;49;00m
    #x1B[33m    Make new Index with passed list of labels deleted.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Parameters#x1B[39;49;00m
    #x1B[33m    ----------#x1B[39;49;00m
    #x1B[33m    labels : array-like or scalar#x1B[39;49;00m
    #x1B[33m        Array-like object or a scalar value, representing the labels to be removed#x1B[39;49;00m
    #x1B[33m        from the Index.#x1B[39;49;00m
    #x1B[33m    errors : {'ignore', 'raise'}, default 'raise'#x1B[39;49;00m
    #x1B[33m        If 'ignore', suppress error and existing labels are dropped.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Returns#x1B[39;49;00m
    #x1B[33m    -------#x1B[39;49;00m
    #x1B[33m    Index#x1B[39;49;00m
    #x1B[33m        Will be same type as self, except for RangeIndex.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Raises#x1B[39;49;00m
    #x1B[33m    ------#x1B[39;49;00m
    #x1B[33m    KeyError#x1B[39;49;00m
    #x1B[33m        If not all of the labels are found in the selected axis#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    See Also#x1B[39;49;00m
    #x1B[33m    --------#x1B[39;49;00m
    #x1B[33m    Index.dropna : Return Index without NA/NaN values.#x1B[39;49;00m
    #x1B[33m    Index.drop_duplicates : Return Index with duplicate values removed.#x1B[39;49;00m
    #x1B[33m#x1B[39;49;00m
    #x1B[33m    Examples#x1B[39;49;00m
    #x1B[33m    --------#x1B[39;49;00m
    #x1B[33m    >>> idx = pd.Index(["a", "b", "c"])#x1B[39;49;00m
    #x1B[33m    >>> idx.drop(["a"])#x1B[39;49;00m
    #x1B[33m    Index(['b', 'c'], dtype='str')#x1B[39;49;00m
    #x1B[33m    """#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m #x1B[95mnot#x1B[39;49;00m #x1B[96misinstance#x1B[39;49;00m(labels, Index):#x1B[90m#x1B[39;49;00m
            #x1B[90m# avoid materializing e.g. RangeIndex#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            arr_dtype = #x1B[33m"#x1B[39;49;00m#x1B[33mobject#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[94mif#x1B[39;49;00m #x1B[96mself#x1B[39;49;00m.dtype == #x1B[33m"#x1B[39;49;00m#x1B[33mobject#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m #x1B[94melse#x1B[39;49;00m #x1B[94mNone#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
            labels = com.index_labels_to_array(labels, dtype=arr_dtype)#x1B[90m#x1B[39;49;00m
    #x1B[90m#x1B[39;49;00m
        indexer = #x1B[96mself#x1B[39;49;00m.get_indexer_for(labels)#x1B[90m#x1B[39;49;00m
        mask = indexer == -#x1B[94m1#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
        #x1B[94mif#x1B[39;49;00m mask.any():#x1B[90m#x1B[39;49;00m
            #x1B[94mif#x1B[39;49;00m errors != #x1B[33m"#x1B[39;49;00m#x1B[33mignore#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m:#x1B[90m#x1B[39;49;00m
>               #x1B[94mraise#x1B[39;49;00m #x1B[96mKeyError#x1B[39;49;00m(#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mlabels[mask].tolist()#x1B[33m}#x1B[39;49;00m#x1B[33m not found in axis#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m)#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE               KeyError: "['cat_unordered'] not found in axis"#x1B[0m

#x1B[1m#x1B[31m../../../..../anndata/88DSKUwu/hatch-test.stable/lib/python3.14.../core/indexes/base.py#x1B[0m:7268: KeyError
tests.accessors.test_get::test_get_values[A.X['cell-5', :]-da.array[sp.csr_array]]
Stack Traces | 0.007s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.X['cell-5', :]-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.873966  0.159720
gene-1   0.025075  0.257487
gene-2   0.870531  0.474040
gene-3....655927
gene-46  0.323450  0.039352
gene-47  0.596677  0.723572
gene-48  0.209327  0.541859
gene-49  0.219875  0.802773
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.X[:, :]-da.array[sp.csr_array]]
Stack Traces | 0.007s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.X[:, :]-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.958436  0.719782
gene-1   0.349221  0.295874
gene-2   0.787080  0.036086
gene-3....017865
gene-46  0.868837  0.735277
gene-47  0.742523  0.160127
gene-48  0.140735  0.368164
gene-49  0.143497  0.482947
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.obsm['umap'][:, 0]-da.array[sp.csc_matrix]]
Stack Traces | 0.007s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.obsm['umap'][:, 0]-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.967313  0.922182
gene-1   0.487897  0.762878
gene-2   0.970603  0.946605
gene-3....975147
gene-46  0.873531  0.075636
gene-47  0.799556  0.521293
gene-48  0.496607  0.001413
gene-49  0.431267  0.794109
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.obsm['umap'][:, 0]-da.array[sp.csr_array]]
Stack Traces | 0.007s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.obsm['umap'][:, 0]-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.431842  0.681053
gene-1   0.299984  0.397846
gene-2   0.393197  0.894006
gene-3....693497
gene-46  0.150432  0.971877
gene-47  0.207005  0.190024
gene-48  0.410640  0.753327
gene-49  0.940765  0.459017
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.obsm['umap'][:, 1]-da.array[sp.csc_matrix]]
Stack Traces | 0.007s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.obsm['umap'][:, 1]-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.666919  0.323022
gene-1   0.554622  0.318592
gene-2   0.637275  0.433687
gene-3....033688
gene-46  0.075423  0.954087
gene-47  0.190748  0.497037
gene-48  0.255727  0.686085
gene-49  0.802037  0.830511
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.X['cell-5', :]-da.array[sp.csc_matrix]]
Stack Traces | 0.008s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.X['cell-5', :]-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.678151  0.001045
gene-1   0.650263  0.731296
gene-2   0.105133  0.343465
gene-3....852963
gene-46  0.787652  0.106200
gene-47  0.545765  0.764528
gene-48  0.943169  0.370475
gene-49  0.292545  0.681625
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.layers['a'][:, 'gene-18']-da.array[sp.csc_matrix]]
Stack Traces | 0.008s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.layers['a'][:, 'gene-18']-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.879352  0.823696
gene-1   0.576031  0.976647
gene-2   0.646644  0.403330
gene-3....519440
gene-46  0.122533  0.947564
gene-47  0.521411  0.095613
gene-48  0.612943  0.821335
gene-49  0.632213  0.882594
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.layers['a'][:, :]-da.array[sp.csc_matrix]]
Stack Traces | 0.008s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.layers['a'][:, :]-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.122665  0.292975
gene-1   0.693282  0.604150
gene-2   0.085047  0.713446
gene-3....308560
gene-46  0.145731  0.159752
gene-47  0.584506  0.179827
gene-48  0.776204  0.572607
gene-49  0.304508  0.274332
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.obsm['umap'][:, 1]-da.array[sp.csr_array]]
Stack Traces | 0.008s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.obsm['umap'][:, 1]-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.244846  0.193245
gene-1   0.240227  0.525356
gene-2   0.204621  0.491550
gene-3....318290
gene-46  0.634284  0.342083
gene-47  0.884872  0.107263
gene-48  0.860731  0.682180
gene-49  0.656239  0.122604
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.varp['cons'][:, :]-da.array[sp.csc_matrix]]
Stack Traces | 0.008s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.varp['cons'][:, :]-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.876941  0.948391
gene-1   0.445679  0.263583
gene-2   0.317469  0.772678
gene-3....984073
gene-46  0.945322  0.210949
gene-47  0.185381  0.938301
gene-48  0.138146  0.211848
gene-49  0.789871  0.485390
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.X[:, :]-da.array[sp.csc_matrix]]
Stack Traces | 0.009s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.X[:, :]-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.921470  0.932664
gene-1   0.658831  0.002035
gene-2   0.199478  0.245297
gene-3....064557
gene-46  0.901471  0.571037
gene-47  0.770374  0.160817
gene-48  0.260145  0.991242
gene-49  0.421957  0.644453
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.layers['a']['cell-77', :]-da.array[sp.csr_array]]
Stack Traces | 0.009s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.layers['a']['cell-77', :]-da.array[sp.csr_array]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31m../...../_temp/uv-python-dir/cpython-3.14.7-linux-x86_64-gnu/lib/python3.14/functools.py#x1B[0m:982: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.380224  0.043648
gene-1   0.679398  0.555303
gene-2   0.338478  0.390922
gene-3....452106
gene-46  0.678943  0.028897
gene-47  0.885776  0.077687
gene-48  0.689630  0.315624
gene-49  0.485672  0.569467
typ = <class 'scipy.sparse._csr.csr_array'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.X[:, 'gene-3']-da.array[sp.csc_matrix]]
Stack Traces | 0.01s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.X[:, 'gene-3']-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.048325  0.410891
gene-1   0.392714  0.809621
gene-2   0.430053  0.183239
gene-3....135667
gene-46  0.218830  0.134882
gene-47  0.893800  0.197625
gene-48  0.287330  0.887397
gene-49  0.006385  0.718057
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.layers['a']['cell-77', :]-da.array[sp.csc_matrix]]
Stack Traces | 0.01s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.layers['a']['cell-77', :]-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.864132  0.287930
gene-1   0.038764  0.004811
gene-2   0.390572  0.413383
gene-3....511525
gene-46  0.422210  0.486324
gene-47  0.891431  0.248138
gene-48  0.611316  0.692810
gene-49  0.554092  0.955921
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.varp['cons'][:, 'gene-46']-da.array[sp.csc_matrix]]
Stack Traces | 0.01s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.varp['cons'][:, 'gene-46']-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.951463  0.558857
gene-1   0.036570  0.804239
gene-2   0.405659  0.581954
gene-3....442783
gene-46  0.482433  0.576490
gene-47  0.092865  0.241026
gene-48  0.455408  0.084408
gene-49  0.609678  0.583735
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError
tests.accessors.test_get::test_get_values[A.varp['cons']['gene-46', :]-da.array[sp.csc_matrix]]
Stack Traces | 0.012s run time
adata = AnnData object with n_obs × n_vars = 100 × 50
    obs: 'type'
    var: 'grp'
    obsm: 'umap'
    varm: 'df'
    varp: 'cons'
    layers: 'a', None (.X)
request = <SubRequest 'get_test_params' for <Function test_get_values[A.varp['cons']['gene-46', :]-da.array[sp.csc_matrix]]>>

    #x1B[0m#x1B[37m@pytest#x1B[39;49;00m.fixture(#x1B[90m#x1B[39;49;00m
        params=[#x1B[90m#x1B[39;49;00m
            pytest.param(#x1B[90m#x1B[39;49;00m
                (ad_ref, ad_expected, *typ.values, convert),#x1B[90m#x1B[39;49;00m
                marks=typ.marks,#x1B[90m#x1B[39;49;00m
                #x1B[96mid#x1B[39;49;00m=#x1B[33mf#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mad_ref#x1B[33m}#x1B[39;49;00m#x1B[33m-#x1B[39;49;00m#x1B[33m{#x1B[39;49;00mtyp.id#x1B[33m}#x1B[39;49;00m#x1B[33m"#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m paths, types, convert #x1B[95min#x1B[39;49;00m (#x1B[90m#x1B[39;49;00m
                (ND_PATHS, ND_TYPES, convert_ndarrays),#x1B[90m#x1B[39;49;00m
                (DF_PATHS, DF_TYPES, convert_dataframes),#x1B[90m#x1B[39;49;00m
            )#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m ad_ref, ad_expected #x1B[95min#x1B[39;49;00m paths#x1B[90m#x1B[39;49;00m
            #x1B[94mfor#x1B[39;49;00m typ #x1B[95min#x1B[39;49;00m types#x1B[90m#x1B[39;49;00m
        ]#x1B[90m#x1B[39;49;00m
    )#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92mget_test_params#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        adata: AnnData, request: pytest.FixtureRequest#x1B[90m#x1B[39;49;00m
    ) -> #x1B[96mtuple#x1B[39;49;00m[AnnData, AdRef, #x1B[96mtype#x1B[39;49;00m[InMemoryArray], InMemoryArray]:#x1B[90m#x1B[39;49;00m
        ad_ref, ad_expected, convert_array, *types_expected, convert = request.param#x1B[90m#x1B[39;49;00m
>       convert(adata, convert_array)#x1B[90m#x1B[39;49;00m

#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:190: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:134: in convert_ndarrays
    #x1B[0madata.varm[k] = conv(v)#x1B[90m#x1B[39;49;00m
                    ^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mtests/accessors/test_get.py#x1B[0m:129: in conv
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m array_conv(v)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[.../usr/lib/python3.12/functools.py#x1B[0m:909: in wrapper
    #x1B[0m#x1B[94mreturn#x1B[39;49;00m dispatch(args[#x1B[94m0#x1B[39;49;00m].#x1B[91m__class__#x1B[39;49;00m)(*args, **kw)#x1B[90m#x1B[39;49;00m
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^#x1B[90m#x1B[39;49;00m
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

a =                 a         b
gene-0   0.886350  0.021181
gene-1   0.716024  0.741645
gene-2   0.797176  0.450428
gene-3....690770
gene-46  0.131068  0.594818
gene-47  0.134831  0.134247
gene-48  0.972864  0.497368
gene-49  0.309622  0.694906
typ = <class 'scipy.sparse._csr.csr_matrix'>, chunks = None

    #x1B[0m#x1B[37m@singledispatch#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
    #x1B[94mdef#x1B[39;49;00m#x1B[90m #x1B[39;49;00m#x1B[92m_as_sparse_dask#x1B[39;49;00m(#x1B[90m#x1B[39;49;00m
        a: NDArray | CSArray | CSMatrix | DaskArray,#x1B[90m#x1B[39;49;00m
        *,#x1B[90m#x1B[39;49;00m
        typ: #x1B[96mtype#x1B[39;49;00m[CSArray | CSMatrix | CupyCSMatrix],#x1B[90m#x1B[39;49;00m
        chunks: #x1B[96mtuple#x1B[39;49;00m[#x1B[96mint#x1B[39;49;00m, ...] | #x1B[94mNone#x1B[39;49;00m = #x1B[94mNone#x1B[39;49;00m,#x1B[90m#x1B[39;49;00m
    ) -> DaskArray:#x1B[90m#x1B[39;49;00m
    #x1B[90m    #x1B[39;49;00m#x1B[33m"""Convert a to a sparse dask array, preserving sparse format and container (`cs{rc}_{array,matrix}`)."""#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
>       #x1B[94mraise#x1B[39;49;00m #x1B[96mNotImplementedError#x1B[39;49;00m#x1B[90m#x1B[39;49;00m
#x1B[1m#x1B[31mE       NotImplementedError#x1B[0m

#x1B[1m#x1B[.../anndata/tests/helpers.py#x1B[0m:1003: NotImplementedError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@flying-sheep flying-sheep added this to the 0.14.0 milestone Aug 13, 2026
Base automatically changed from acc-fixes to main August 25, 2026 16:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

some problems regarding the string shortcuts for accessors

1 participant