[med-svn] [Git][med-team/python-biom-format][master] 3 commits: New upstream version 2.1.18

Karsten Schöke (@karso) gitlab at salsa.debian.org
Mon Oct 12 10:26:19 BST 2026



Karsten Schöke pushed to branch master at Debian Med / python-biom-format


Commits:
466d81c9 by Karsten Schöke at 2026-10-12T11:01:33+02:00
New upstream version 2.1.18
- - - - -
f0ba945b by Karsten Schöke at 2026-10-12T11:05:32+02:00
Update upstream source from tag 'upstream/2.1.18'

Update to upstream version '2.1.18'
with Debian dir 5cb3bc6bb0ea2b27107449e6ba67c1d14552b9ba

- - - - -
d22abeff by Karsten Schöke at 2026-10-12T11:08:24+02:00
d/patches: remove obsolete numpy-2.4.patch

- - - - -


12 changed files:

- .github/workflows/python-package-conda.yml
- .github/workflows/wheels.yml
- ChangeLog.md
- biom/table.py
- biom/tests/test_parse.py
- biom/util.py
- ci/conda_host_env.yml
- debian/changelog
- − debian/patches/numpy-2.4.patch
- debian/patches/series
- doc/conf.py
- pyproject.toml


Changes:

=====================================
.github/workflows/python-package-conda.yml
=====================================
@@ -9,8 +9,8 @@ on:
     branches: [ master ]
 
 env:
-  latest_python: "3.13"
-  supported_pythons: '["3.9", "3.10", "3.11", "3.12", "3.13"]'
+  latest_python: "3.14"
+  supported_pythons: '["3.9", "3.10", "3.11", "3.12", "3.13", "3.14"]'
   miniforge_version: "23.11.0-0"
   miniforge_variant: "Mambaforge"
 
@@ -81,7 +81,7 @@ jobs:
     strategy:
       fail-fast: true
       matrix:
-        os: [ubuntu-latest, macos-latest, windows-latest, ubuntu-24.04-arm, macos-13]
+        os: [ubuntu-latest, macos-latest, windows-latest, ubuntu-24.04-arm, macos-15-intel]
         python_version: ${{ fromJSON(needs.conf.outputs.supported_pythons) }}
         use_conda: [true, false]
     steps:


=====================================
.github/workflows/wheels.yml
=====================================
@@ -18,7 +18,7 @@ jobs:
     runs-on: ${{ matrix.os }}
     strategy:
       matrix:
-        os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-13, macos-14]
+        os: [ubuntu-latest, ubuntu-24.04-arm, windows-latest, macos-15, macos-15-intel]
         # The 5 runners correspond to 5 architectures. Details:
         # https://cibuildwheel.pypa.io/en/stable/options/#archs
         # The runners and architectures should be automatically associated. However, in
@@ -41,7 +41,7 @@ jobs:
           submodules: true
 
       - name: Build wheels
-        uses: pypa/cibuildwheel at v2.23.3
+        uses: pypa/cibuildwheel at v3.4.1
 
       - uses: actions/upload-artifact at v4
         with:


=====================================
ChangeLog.md
=====================================
@@ -1,6 +1,21 @@
 BIOM-Format ChangeLog
 =====================
 
+biom-2.1.18
+-----------
+
+Bug fix and maintenance release, October 5th 2026.
+
+Bug fixes:
+
+* A regression with parse of UTF-8 characters was introduced, reported [here](https://forum.qiime2.org/t/feature-table-gives-ascii-codec-cant-decode-byte-0xc3-in-position-4-error/33858/7)
+* `np.in1d` was removed in NumPy 2.4, replaced with `np.isin`. See issue [#1003](https://github.com/biocore/biom-format/issues/1003)
+* `Table.to_anndata` failed with anndata >= 0.13, which removed the `dtype` argument to `AnnData`. The matrix is now cast prior to construction. See PR [#1005](https://github.com/biocore/biom-format/pull/1005)
+
+General Maintenance:
+
+* Python 3.14 added to CI and wheels are now built for Python 3.14. See PR [#1004](https://github.com/biocore/biom-format/pull/1004)
+
 biom-2.1.17
 -----------
 


=====================================
biom/table.py
=====================================
@@ -4182,11 +4182,15 @@ html
         def axis_load(grp):
             """Loads all the data of the given group"""
             # fetch all of the IDs
-            ids = grp['ids'][:]
+            ids = grp['ids']
 
             if ids.size > 0:
+                ids = ids.asstr()[:]
                 ids_dtype = 'U%d' % max([len(v) for v in ids])
                 ids = np.asarray(ids, dtype=ids_dtype)
+            else:
+                # .asstr does not handle an empty dataset
+                ids = ids[:]
 
             parser = defaultdict(lambda: general_parser)
             parser['taxonomy'] = vlen_list_of_str_parser
@@ -4234,7 +4238,7 @@ html
                 else:
                     desired_ids = np.asarray(desired_ids)
                     # Get the index of the source ids to include
-                    idx = np.in1d(source_ids, desired_ids)
+                    idx = np.isin(source_ids, desired_ids)
                     # Retrieve only the ids that we are interested on
                     ids = source_ids[idx]
                     # Check that all desired ids have been found on source ids
@@ -4393,10 +4397,13 @@ html
         if dense:
             mat = mat.toarray()
 
+        # anndata 0.13 removed the AnnData(dtype=...) argument
+        mat = mat.astype(dtype)
+
         var = self.metadata_to_dataframe("sample")
         obs = self.metadata_to_dataframe("observation")
 
-        adata = anndata.AnnData(mat, obs=obs, var=var, dtype=dtype)
+        adata = anndata.AnnData(mat, obs=obs, var=var)
         # Convention for scRNA-seq analysis in Python
         adata = adata.transpose()
 


=====================================
biom/tests/test_parse.py
=====================================
@@ -17,6 +17,7 @@ from tempfile import NamedTemporaryFile
 import numpy as np
 import numpy.testing as npt
 
+from biom import example_table
 from biom.parse import (generatedby, MetadataMap, parse_biom_table, parse_uc,
                         load_table, save_table)
 from biom.table import Table
@@ -283,6 +284,15 @@ class ParseTests(TestCase):
         obs = Table.from_adjacency(''.join(lines))
         self.assertEqual(obs, exp)
 
+    def test_parse_biom_table_hdf5_accent_utf8_regression(self):
+        tab = example_table.copy()
+        tab.update_ids({i: f'{i}fóó' for i in tab.ids()}, inplace=True)
+        with NamedTemporaryFile(delete=False) as tmpfile:
+            with h5py.File(tmpfile.name, 'w') as fp:
+                tab.to_hdf5(fp, 'asf')
+            obs = load_table(tmpfile.name)
+            self.assertEqual(obs, tab)
+
     def test_parse_biom_table_hdf5(self):
         """Make sure we can parse a HDF5 table through the same loader"""
         cwd = os.getcwd()


=====================================
biom/util.py
=====================================
@@ -41,7 +41,7 @@ __url__ = "http://biom-format.org"
 __maintainer__ = "Daniel McDonald"
 __email__ = "daniel.mcdonald at colorado.edu"
 __format_version__ = (2, 1)
-__version__ = "2.1.17"
+__version__ = "2.1.18"
 
 
 def generate_subsamples(table, n, axis='sample', by_id=False):


=====================================
ci/conda_host_env.yml
=====================================
@@ -3,10 +3,8 @@
 name: testing
 channels:
   - conda-forge
-  - defaults
 dependencies:
   - hdf5
   - pip
   - cython
-  - pip:
-      - "-r requirements.test.txt"
+  - pytest


=====================================
debian/changelog
=====================================
@@ -1,3 +1,9 @@
+python-biom-format (2.1.18-1) UNRELEASED; urgency=medium
+
+  * New upstream version 2.1.18
+
+ -- Karsten Schöke <karsten.schoeke at geobasis-bb.de>  Mon, 12 Oct 2026 11:05:32 +0200
+
 python-biom-format (2.1.17-5) unstable; urgency=medium
 
   * Team upload.


=====================================
debian/patches/numpy-2.4.patch deleted
=====================================
@@ -1,17 +0,0 @@
-Author: Andreas Tille <tille at debian.org>
-Last-Update: 2026-05-18
-Bug-Debian: https://bugs.debian.org/1131071
-Description: in1d was replaced by isin in numpy 2.4
-Forwarded: https://github.com/biocore/biom-format/issues/1003
-
---- a/biom/table.py
-+++ b/biom/table.py
-@@ -4234,7 +4234,7 @@ html
-                 else:
-                     desired_ids = np.asarray(desired_ids)
-                     # Get the index of the source ids to include
--                    idx = np.in1d(source_ids, desired_ids)
-+                    idx = np.isin(source_ids, desired_ids)
-                     # Retrieve only the ids that we are interested on
-                     ids = source_ids[idx]
-                     # Check that all desired ids have been found on source ids


=====================================
debian/patches/series
=====================================
@@ -3,4 +3,3 @@ no-web-adds.patch
 fix_future_import.patch
 sphinx_1.6.patch
 posix_shell.patch
-numpy-2.4.patch


=====================================
doc/conf.py
=====================================
@@ -57,15 +57,15 @@ master_doc = 'index'
 
 # General information about the project.
 project = 'biom-format'
-copyright = '2011-2025 The BIOM Format Development Team'
+copyright = '2011-2026 The BIOM Format Development Team'
 
 # The version info for the project you're documenting, acts as replacement for
 # |version| and |release|, also used in various other places throughout the
 # built documents.
 #
 # The full version, including alpha/beta/rc tags.
-version = "2.1.17"
-release = "2.1.17"
+version = "2.1.18"
+release = "2.1.18"
 
 # The language for content autogenerated by Sphinx. Refer to documentation
 # for a list of supported languages.


=====================================
pyproject.toml
=====================================
@@ -39,6 +39,7 @@ classifiers = [
     "Programming Language :: Python :: 3.11",
     "Programming Language :: Python :: 3.12",
     "Programming Language :: Python :: 3.13",
+    "Programming Language :: Python :: 3.14",
     "Programming Language :: Python :: Implementation :: CPython",
     "Operating System :: OS Independent",
     "Operating System :: POSIX :: Linux",
@@ -83,7 +84,7 @@ test-requires = ["pytest", "numpy"]
 skip = ["*-win32", "*-manylinux_i686", "pp*", "*-musllinux*"]
 
 # Python versions to build
-build = "cp39-* cp310-* cp311-* cp312-* cp313-*"
+build = "cp39-* cp310-* cp311-* cp312-* cp313-* cp314-*"
 
 [tool.pytest.ini_options]
 addopts = ["--ignore=biom/assets/exercise_api.py "]



View it on GitLab: https://salsa.debian.org/med-team/python-biom-format/-/compare/e34a69c35b19ef09a06fc2c6b2139835dc8a3277...d22abeffb24755a4eaf53a113de68e29e8ad25c7

-- 
View it on GitLab: https://salsa.debian.org/med-team/python-biom-format/-/compare/e34a69c35b19ef09a06fc2c6b2139835dc8a3277...d22abeffb24755a4eaf53a113de68e29e8ad25c7
You're receiving this email because of your account on salsa.debian.org. Manage all notifications: https://salsa.debian.org/-/profile/notifications | Help: https://salsa.debian.org/help


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/debian-med-commit/attachments/20261012/9da80f73/attachment-0001.htm>


More information about the debian-med-commit mailing list