#1151826 python-prodigy: FTBFS: E Bio.MissingPythonDependencyError: Please install NumPy if you want to use Bio.PDB. See http://www.numpy.org/

#1151826#5
Date:
2026-10-23 16:44:52 UTC
From:
To:
Dear maintainer:

During a rebuild of all packages in unstable, this package failed to build.

Below you will find the last part of the build log (probably the most
relevant part, but not necessarily). If required, the full build log
is available here:

https://people.debian.org/~sanvila/build-logs/202610/

About the archive rebuild: The build was made on virtual machines from AWS,
using sbuild and a reduced chroot with only build-essential packages.

If you cannot reproduce the bug please contact me privately, as I
am willing to provide ssh access to a virtual machine where the bug is
fully reproducible.

If this is really a bug in one of the build-depends, please use
reassign and add an affects on src:python-prodigy, so that this is still
visible in the BTS web page for this package.

Thanks.
--------------------------------------------------------------------------------
[...]
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
tests/test_prodigy.py:9: in <module>
    from Bio.PDB.Model import Model
/usr/lib/python3/dist-packages/Bio/PDB/__init__.py:30: in <module>
    raise MissingPythonDependencyError(
E   Bio.MissingPythonDependencyError: Please install NumPy if you want to use Bio.PDB. See http://www.numpy.org/
=========================== short test summary info ============================
ERROR tests/test_parsers.py
ERROR tests/test_prodigy.py
!!!!!!!!!!!!!!!!!!! Interrupted: 2 errors during collection !!!!!!!!!!!!!!!!!!!!
============================== 2 errors in 0.10s ===============================
E: pybuild pybuild:485: test: plugin pyproject failed with: exit code=2: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.15_prodigy/build; python3.15 -m pytest tests
I: pybuild base:383: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_prodigy/build; python3.14 -m pytest tests
============================= test session starts ==============================
platform linux -- Python 3.14.8, pytest-9.1.1, pluggy-1.6.0
rootdir: /<<PKGBUILDDIR>>
configfile: pyproject.toml
collected 19 items

tests/test_parsers.py ......                                             [ 31%]
tests/test_prodigy.py ...........                                        [ 89%]
tests/test_utils.py ..                                                   [100%]

=============================== warnings summary ===============================
.pybuild/cpython3_3.14_prodigy/build/tests/test_parsers.py: 3 warnings
.pybuild/cpython3_3.14_prodigy/build/tests/test_prodigy.py: 9 warnings
  /usr/lib/python3/dist-packages/Bio/PDB/StructureBuilder.py:100: PDBConstructionWarning: WARNING: Chain A is discontinuous at line 1314.
    warnings.warn(

.pybuild/cpython3_3.14_prodigy/build/tests/test_parsers.py: 3 warnings
.pybuild/cpython3_3.14_prodigy/build/tests/test_prodigy.py: 9 warnings
  /usr/lib/python3/dist-packages/Bio/PDB/StructureBuilder.py:100: PDBConstructionWarning: WARNING: Chain B is discontinuous at line 1366.
    warnings.warn(

.pybuild/cpython3_3.14_prodigy/build/tests/test_parsers.py::test_validate_structure_cif
.pybuild/cpython3_3.14_prodigy/build/tests/test_parsers.py::test_parse_structure_cif
.pybuild/cpython3_3.14_prodigy/build/tests/test_parsers.py::test_parse_structure_cif
  /usr/lib/python3/dist-packages/Bio/PDB/StructureBuilder.py:100: PDBConstructionWarning: WARNING: Chain A is discontinuous at line 924.
    warnings.warn(

.pybuild/cpython3_3.14_prodigy/build/tests/test_parsers.py::test_validate_structure_cif
.pybuild/cpython3_3.14_prodigy/build/tests/test_parsers.py::test_parse_structure_cif
.pybuild/cpython3_3.14_prodigy/build/tests/test_parsers.py::test_parse_structure_cif
  /usr/lib/python3/dist-packages/Bio/PDB/StructureBuilder.py:100: PDBConstructionWarning: WARNING: Chain B is discontinuous at line 976.
    warnings.warn(

#1151826#10
Date:
2026-10-27 10:42:29 UTC
From:
To:
Control: retitle -1 python-prodigy: FTBFS: ModuleNotFoundError: No module named 'Bio.PDB.ccealign'

I: pybuild base:383: cd /build/reproducible-path/python-prodigy-2.4.0/.pybuild/cpython3_3.15_prodigy/build; python3.15 -m pytest tests
Traceback (most recent call last):
   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 330, in wrap_session
     session.exitstatus = doit(config, session) or 0
   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 383, in _main
     config.hook.pytest_collection(session=session)
   File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 512, in __call__
     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
   File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec
     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall
     raise exception
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall
     teardown.throw(exception)
   File "/usr/lib/python3/dist-packages/_pytest/logging.py", line 803, in pytest_collection
     return (yield)
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall
     teardown.throw(exception)
   File "/usr/lib/python3/dist-packages/_pytest/warnings.py", line 99, in pytest_collection
     return (yield)
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall
     teardown.throw(exception)
   File "/usr/lib/python3/dist-packages/_pytest/config/__init__.py", line 1445, in pytest_collection
     return (yield)
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 121, in _multicall
     res = hook_impl.function(*args)
   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 394, in pytest_collection
     session.perform_collect()
   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 869, in perform_collect
     self.items.extend(self.genitems(node))
   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 1035, in genitems
     yield from self.genitems(subnode)
   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 1032, in genitems
     rep, duplicate = self._collect_one_node(node, handle_dupes)
   File "/usr/lib/python3/dist-packages/_pytest/main.py", line 895, in _collect_one_node
     rep = collect_one_node(node)
   File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 589, in collect_one_node
     rep: CollectReport = ihook.pytest_make_collect_report(collector=collector)
   File "/usr/lib/python3/dist-packages/pluggy/_hooks.py", line 512, in __call__
     return self._hookexec(self.name, self._hookimpls.copy(), kwargs, firstresult)
   File "/usr/lib/python3/dist-packages/pluggy/_manager.py", line 120, in _hookexec
     return self._inner_hookexec(hook_name, methods, kwargs, firstresult)
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 167, in _multicall
     raise exception
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall
     teardown.throw(exception)
   File "/usr/lib/python3/dist-packages/_pytest/fixtures.py", line 1798, in pytest_make_collect_report
     result = yield
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 139, in _multicall
     teardown.throw(exception)
   File "/usr/lib/python3/dist-packages/_pytest/capture.py", line 880, in pytest_make_collect_report
     rep = yield
   File "/usr/lib/python3/dist-packages/pluggy/_callers.py", line 121, in _multicall
     res = hook_impl.function(*args)
   File "/usr/lib/python3/dist-packages/_pytest/runner.py", line 428, in pytest_make_collect_report
     errorinfo = collector.repr_failure(call.excinfo)
   File "/usr/lib/python3/dist-packages/_pytest/nodes.py", line 526, in repr_failure
     return self._repr_failure_py(excinfo, style=tbstyle)
   File "/usr/lib/python3/dist-packages/_pytest/nodes.py", line 448, in _repr_failure_py
     return excinfo.getrepr(
   File "/usr/lib/python3/dist-packages/_pytest/_code/code.py", line 774, in getrepr
     return fmt.repr_excinfo(self)
   File "/usr/lib/python3/dist-packages/_pytest/_code/code.py", line 1224, in repr_excinfo
     reprtraceback = self.repr_traceback(excinfo_)
   File "/usr/lib/python3/dist-packages/_pytest/_code/code.py", line 1150, in repr_traceback
     self.repr_traceback_entry(entry, excinfo if last == entry else None)
   File "/usr/lib/python3/dist-packages/_pytest/_code/code.py", line 1092, in repr_traceback_entry
     s = self.get_source(
   File "/usr/lib/python3/dist-packages/_pytest/_code/code.py", line 983, in get_source
     lines.extend(self.get_exconly(excinfo, indent=indent, markall=True))
   File "/usr/lib/python3/dist-packages/_pytest/_code/code.py", line 1032, in get_exconly
     exlines = excinfo.exconly(tryshort=True).split("\n")
   File "/usr/lib/python3/dist-packages/_pytest/_code/code.py", line 674, in exconly
     lines = format_exception_only(self.value)
   File "/usr/lib/python3.15/traceback.py", line 221, in format_exception_only
     te = TracebackException(type(value), value, None, compact=True)
   File "/usr/lib/python3.15/traceback.py", line 1206, in __init__
     elif abi_tag := _find_incompatible_extension_module(module_name):
   File "/usr/lib/python3.15/traceback.py", line 2082, in _find_incompatible_extension_module
     traversable = importlib.resources.files(parent)
   File "/usr/lib/python3.15/importlib/resources/_common.py", line 22, in files
     return from_package(resolve(anchor))
   File "/usr/lib/python3.15/functools.py", line 1003, in wrapper
     return dispatch(args[0].__class__)(*args, **kw)
   File "/usr/lib/python3.15/importlib/resources/_common.py", line 48, in _
     return importlib.import_module(cand)
   File "/usr/lib/python3.15/importlib/__init__.py", line 88, in import_module
     return _bootstrap._gcd_import(name[level:], package, level)
   File "<frozen importlib._bootstrap>", line 1390, in _gcd_import
   File "<frozen importlib._bootstrap>", line 1350, in _find_and_load
   File "<frozen importlib._bootstrap>", line 1309, in _find_and_load_unlocked
   File "<frozen importlib._bootstrap>", line 915, in _load_unlocked
   File "<frozen importlib._bootstrap_external>", line 751, in exec_module
   File "<frozen importlib._bootstrap>", line 549, in _call_with_frames_removed
   File "/usr/lib/python3/dist-packages/Bio/PDB/__init__.py", line 40, in <module>
     from .cealign import CEAligner
   File "/usr/lib/python3/dist-packages/Bio/PDB/cealign.py", line 23, in <module>
     from Bio.PDB.ccealign import run_cealign
ModuleNotFoundError: No module named 'Bio.PDB.ccealign'

Thanks,