[From nobody Thu May 28 11:37:06 2026
Received: (at submit) by bugs.debian.org; 27 Apr 2026 08:21:49 +0000
X-Spam-Checker-Version: SpamAssassin 4.0.1-bugs.debian.org_2005_01_02
 (2024-03-25) on buxtehude.debian.org
X-Spam-Level: 
X-Spam-Status: No, score=-109.2 required=4.0 tests=BAYES_00,DKIMWL_WL_HIGH,
 DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FROMDEVELOPER,
 SPF_HELO_NONE,SPF_NONE,UNPARSEABLE_RELAY,USER_IN_DKIM_WELCOMELIST,
 XMAILER_REPORTBUG autolearn=ham autolearn_force=no
 version=4.0.1-bugs.debian.org_2005_01_02
X-Spam-Bayes: score:0.0000 Tokens: new, 78; hammy, 150; neutral, 77; spammy,
 0. spammytokens:
 hammytokens:0.000-+--Hx-spam-relays-external:sk:stravin,
 0.000-+--H*RT:sk:stravin, 0.000-+--Hx-spam-relays-external:311,
 0.000-+--H*RT:311, 0.000-+--H*RT:108
Return-path: &lt;dparsons@debian.org&gt;
Received: from stravinsky.debian.org ([2001:41b8:202:deb::311:108]:40836)
 by buxtehude.debian.org with esmtps
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;dparsons@debian.org&gt;) id 1wHHDx-005fOI-0N
 for submit@bugs.debian.org; Mon, 27 Apr 2026 08:21:49 +0000
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debian.org; 
 s=smtpauto.stravinsky;
 h=X-Debian-User:Date:Message-ID:Subject:To:From:
 Content-Transfer-Encoding:MIME-Version:Content-Type:Reply-To:Cc:Content-ID:
 Content-Description:In-Reply-To:References;
 bh=wDx1WqNizgkAqTbdkOGmR13I4i3XUEVR/SobcV5oB8w=; b=iMO5QNMZGhl842JbM9m26nSMfC
 IctP9zAC5amypChIZiD4AWIJvpdGL0yf6daZb1XT+2ArU80+Qeur6rkRzQDnNVdAdtOTijrmmPe5g
 9xbi7qsn8+Z1jdMrWdIx66qmKxyH0f9v/Q3/rBAj69ZIdoeCS9R83odRcQfvI5vHvHizb/SJ+uqyk
 620Dx6uC5FcVuXGMd2KP9+yx7jF9QLJ4Zvu/Nv7ogRzr8XnU2lzfeQgJ4asOnVHEYfi+QQ0wUlr7s
 hjTCuxAn4HWwUqp3j+CLfr0GdxuzesFSeXZfLK7s2wu8mT85CF3Gc4YnkzotTBYvDXBEOfuWv/QwZ
 i7omAAzQ==;
Received: from authenticated user by stravinsky.debian.org with esmtpsa
 (TLS1.3:ECDHE_SECP256R1__RSA_PSS_RSAE_SHA256__AES_256_GCM:256)
 (Exim 4.96) (envelope-from &lt;dparsons@debian.org&gt;)
 id 1wHHDu-005Ljj-1U; Mon, 27 Apr 2026 08:21:47 +0000
Received: from drew by sandy with local (Exim 4.99.1)
 (envelope-from &lt;dparsons@debian.org&gt;) id 1wHHDu-0000000C2Wb-00UV;
 Mon, 27 Apr 2026 10:21:46 +0200
Content-Type: text/plain; charset=&quot;us-ascii&quot;
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
From: Drew Parsons &lt;dparsons@debian.org&gt;
To: Debian Bug Tracking System &lt;submit@bugs.debian.org&gt;
Subject: python-anndata: tests fail with scipy 1.17: 'backed_csr_matrix'
 object has no attribute '_validate_indices'
Message-ID: &lt;177727810596.2851989.296378702674955879.reportbug@sandy&gt;
X-Mailer: reportbug 13.2.0
Date: Mon, 27 Apr 2026 10:21:45 +0200
X-Debian-User: dparsons
Delivered-To: submit@bugs.debian.org

Source: python-anndata
Version: 0.12.7-1
Severity: normal

python-anndata is failing debci tests with scipy 1.17,
currently available in experimental

e.g. https://ci.debian.net/packages/p/python-anndata/unstable/amd64/70575515/

234s _____ test_read_array[zarr3-array_bool_subset-slice_int_subset-csr_matrix] _____
234s [gw42] linux -- Python 3.14.4 /usr/bin/python3.14
234s 
234s tmp_path = PosixPath('/tmp/pytest-of-debci/pytest-0/popen-gw42/test_read_array_zarr3_array_bo0')
234s sparse_format = &lt;class 'scipy.sparse._csr.csr_matrix'&gt;, diskfmt = 'zarr'
234s subset_func = &lt;function array_bool_subset at 0x7f5c7c0da4b0&gt;
234s subset_func2 = &lt;function slice_int_subset at 0x7f5c7c0db110&gt;
234s 
234s     @pytest.mark.parametrize(&quot;sparse_format&quot;, [sparse.csr_matrix, sparse.csc_matrix])
234s     @pytest.mark.parametrize(
234s         (&quot;subset_func&quot;, &quot;subset_func2&quot;),
234s         product(
234s             [
234s                 test_helpers.array_subset,
234s                 test_helpers.slice_int_subset,
234s                 test_helpers.array_int_subset,
234s                 test_helpers.array_bool_subset,
234s             ],
234s             repeat=2,
234s         ),
234s     )
234s     def test_read_array(
234s         tmp_path: Path,
234s         sparse_format: Callable[[ArrayLike], CSMatrix],
234s         diskfmt: Literal[&quot;h5ad&quot;, &quot;zarr&quot;],
234s         subset_func,
234s         subset_func2,
234s     ):
234s         path = tmp_path / f&quot;test.{diskfmt.replace('ad', '')}&quot;
234s         a = sparse_format(sparse.random(100, 100))
234s         obs_idx = subset_func(np.arange(100))
234s         var_idx = subset_func2(np.arange(100))
234s         f = open_write_group(path, mode=&quot;a&quot;) if diskfmt == &quot;zarr&quot; else h5py.File(path, &quot;a&quot;)
234s         ad.io.write_elem(f, &quot;mtx&quot;, a)
234s         diskmtx = sparse_dataset(f[&quot;mtx&quot;])
234s         ad.settings.use_sparse_array_on_read = True
234s &gt;       assert issubclass(type(diskmtx[obs_idx, var_idx]), CSArray)
234s                                ^^^^^^^^^^^^^^^^^^^^^^^^^
234s 
234s tests/test_backed_sparse.py:336: 
234s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
234s /usr/lib/python3/dist-packages/anndata/_core/sparse_dataset.py:461: in __getitem__
234s     row_sp_matrix_validated, col_sp_matrix_validated = validate_indices(
234s _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
234s 
234s mtx = &lt;Compressed Sparse Row sparse matrix of dtype 'float64'
234s 	with 100 stored elements and shape (100, 100)&gt;
234s indices = (array([ True,  True,  True, False,  True,  True, False,  True, False,
234s        False, False,  True, False, False,  True... False, False, False, False, False, False, False, False, False,
234s        False]), slice(np.int64(3), np.int64(43), None))
234s 
234s     def validate_indices(
234s         mtx: BackedSparseMatrix, indices: tuple[Index1D, Index1D]
234s     ) -&gt; tuple[Index1D, Index1D]:
234s &gt;       res = mtx._validate_indices(indices)
234s               ^^^^^^^^^^^^^^^^^^^^^
234s E       AttributeError: 'backed_csr_matrix' object has no attribute '_validate_indices'. Did you mean: '_prepare_indices'?
234s 
234s /usr/lib/python3/dist-packages/anndata/_core/sparse_dataset.py:395: AttributeError


This bug will become RC severity: serious later once scipy 1.17 is
uploaded to unstable.
]