Description of problem: Package python-meshio fails to build from source in Fedora Rawhide. Version-Release number of selected component (if applicable): 5.3.5-9.fc44 Steps to Reproduce: koji build --scratch f45 python-meshio-5.3.5-9.fc44.src.rpm Additional info: This package is tracked by Koschei. See: https://koschei.fedoraproject.org/package/python-meshio Reproducible: Always Actual Results: __________ test_read_from_file[01_raw_binary_int64.vtu-tetra-162-64] ___________ filename = PosixPath('/builddir/build/BUILD/python-meshio-5.3.5-build/meshio-5.3.5/tests/meshes/vtu/01_raw_binary_int64.vtu') ref_cells = 'tetra', ref_num_cells = 162, ref_num_pnt = 64 @pytest.mark.parametrize( "filename, ref_cells, ref_num_cells, ref_num_pnt", [ ("00_raw_binary.vtu", "tetra", 162, 64), ("01_raw_binary_int64.vtu", "tetra", 162, 64), ("02_raw_compressed.vtu", "tetra", 162, 64), ], ) def test_read_from_file(filename, ref_cells, ref_num_cells, ref_num_pnt): this_dir = pathlib.Path(__file__).resolve().parent filename = this_dir / "meshes" / "vtu" / filename > mesh = meshio.read(filename) ^^^^^^^^^^^^^^^^^^^^^ tests/test_vtu.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/_helpers.py:71: in read return _read_file(Path(filename), file_format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/_helpers.py:103: in _read_file return reader_map[file_format](str(path)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/vtu/_vtu.py:577: in read reader = VtuReader(filename) ^^^^^^^^^^^^^^^^^^^ ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/vtu/_vtu.py:389: in __init__ piece_cells[data_array.attrib["Name"]] = self.read_data( ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/vtu/_vtu.py:558: in read_data data = reader(self.appended_data[offset:], dtype) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/vtu/_vtu.py:448: in read_uncompressed_binary byte_string = base64.b64decode(data) ^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ s = b'QBQAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAACAAAAAAAA...oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo=' altchars = None, validate = False def b64decode(s, altchars=None, validate=False): """Decode the Base64 encoded bytes-like object or ASCII string s. Optional altchars must be a bytes-like object or ASCII string of length 2 which specifies the alternative alphabet used instead of the '+' and '/' characters. The result is returned as a bytes object. A binascii.Error is raised if s is incorrectly padded. If validate is False (the default), characters that are neither in the normal base-64 alphabet nor the alternative alphabet are discarded prior to the padding check. If validate is True, these non-alphabet characters in the input result in a binascii.Error. For more information about the strict base64 check, see: https://docs.python.org/3.11/library/binascii.html#binascii.a2b_base64 """ s = _bytes_from_decode_data(s) if altchars is not None: altchars = _bytes_from_decode_data(altchars) assert len(altchars) == 2, repr(altchars) s = s.translate(bytes.maketrans(altchars, b'+/')) > return binascii.a2b_base64(s, strict_mode=validate) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E binascii.Error: Invalid base64-encoded string: number of data characters (8889) cannot be 1 more than a multiple of 4 /usr/lib64/python3.14/base64.py:85: Error ___________ test_read_from_file[02_raw_compressed.vtu-tetra-162-64] ____________ filename = PosixPath('/builddir/build/BUILD/python-meshio-5.3.5-build/meshio-5.3.5/tests/meshes/vtu/02_raw_compressed.vtu') ref_cells = 'tetra', ref_num_cells = 162, ref_num_pnt = 64 @pytest.mark.parametrize( "filename, ref_cells, ref_num_cells, ref_num_pnt", [ ("00_raw_binary.vtu", "tetra", 162, 64), ("01_raw_binary_int64.vtu", "tetra", 162, 64), ("02_raw_compressed.vtu", "tetra", 162, 64), ], ) def test_read_from_file(filename, ref_cells, ref_num_cells, ref_num_pnt): this_dir = pathlib.Path(__file__).resolve().parent filename = this_dir / "meshes" / "vtu" / filename > mesh = meshio.read(filename) ^^^^^^^^^^^^^^^^^^^^^ tests/test_vtu.py:76: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/_helpers.py:71: in read return _read_file(Path(filename), file_format) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/_helpers.py:103: in _read_file return reader_map[file_format](str(path)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/vtu/_vtu.py:577: in read reader = VtuReader(filename) ^^^^^^^^^^^^^^^^^^^ ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/vtu/_vtu.py:389: in __init__ piece_cells[data_array.attrib["Name"]] = self.read_data( ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/vtu/_vtu.py:558: in read_data data = reader(self.appended_data[offset:], dtype) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ../BUILDROOT/usr/lib/python3.14/site-packages/meshio/vtu/_vtu.py:448: in read_uncompressed_binary byte_string = base64.b64decode(data) ^^^^^^^^^^^^^^^^^^^^^^ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ s = b'QBQAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAgAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAADAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAACAAAAAAAA...oKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgo=' altchars = None, validate = False def b64decode(s, altchars=None, validate=False): """Decode the Base64 encoded bytes-like object or ASCII string s. Optional altchars must be a bytes-like object or ASCII string of length 2 which specifies the alternative alphabet used instead of the '+' and '/' characters. The result is returned as a bytes object. A binascii.Error is raised if s is incorrectly padded. If validate is False (the default), characters that are neither in the normal base-64 alphabet nor the alternative alphabet are discarded prior to the padding check. If validate is True, these non-alphabet characters in the input result in a binascii.Error. For more information about the strict base64 check, see: https://docs.python.org/3.11/library/binascii.html#binascii.a2b_base64 """ s = _bytes_from_decode_data(s) if altchars is not None: altchars = _bytes_from_decode_data(altchars) assert len(altchars) == 2, repr(altchars) s = s.translate(bytes.maketrans(altchars, b'+/')) > return binascii.a2b_base64(s, strict_mode=validate) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ E binascii.Error: Invalid base64-encoded string: number of data characters (8889) cannot be 1 more than a multiple of 4 /usr/lib64/python3.14/base64.py:85: Error
I filed https://github.com/nschloe/meshio/issues/1558 asking upstream to comment on the maintenance status of meshio, and I filed https://github.com/mikedh/trimesh/issues/2533 to raise awareness with trimesh, the sole reverse dependency in Fedora. I think that these test failures look too significant to ignore, and we should consider retiring the package for Fedora 45 ahead of Python 3.15 integration and patching the dependency out of python-trimesh’s “recommend” extra. We could wait a little while for a response on https://github.com/nschloe/meshio/issues/1558, but I think even an expression of intent to resume development would not remove the problem in the short/medium term, just give us hope that the package may be unretired again in the future.
Correction: python-trimesh only uses meshio as a test dependency via the “test_more” extra. I’m removing this dependency now, making python-meshio a leaf package in F45/Rawhide.