[Debian-med-packaging] Bug#1085587: ariba FTBFS with Python 3.13

Stefano Rivera stefanor at debian.org
Sun Oct 20 19:41:44 BST 2024


Source: ariba
Version: 2.14.7+ds-2
Severity: normal
User: debian-python at lists.debian.org
Usertags: python3.13
Affects: src:spades

This package failed build from source when test-built against a version of
python3-defaults that includes 3.13 as a supported version.

To reproduce this issue, build against python3-defaults (python3-all-dev etc.)
from Debian experimental.

The issue here is that spades is not built for all supported python3
versions, only for the current default version. Until that changes,
maybe the only thing that makes sense to do here is to skip this test
for non-default Python 3 versions?

What's new in Python 3.13:
https://docs.python.org/3.13/whatsnew/3.13.html

Log snippet:

   dh_auto_test -a -O--buildsystem=pybuild
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_ariba/build; python3.13 -m pytest 
============================= test session starts ==============================
platform linux -- Python 3.13.0, pytest-8.3.3, pluggy-1.5.0
rootdir: /<<PKGBUILDDIR>>
plugins: typeguard-4.3.0
collected 356 items

ariba/tests/aln_to_metadata_test.py ....................                 [  5%]
ariba/tests/assembly_compare_test.py ................                    [ 10%]
ariba/tests/assembly_test.py ..ss.....                                   [ 12%]
ariba/tests/assembly_variants_test.py ...........                        [ 15%]
ariba/tests/bam_parse_test.py ......                                     [ 17%]
ariba/tests/card_record_test.py ........                                 [ 19%]
ariba/tests/cdhit_test.py ................                               [ 24%]
ariba/tests/cluster_test.py .............................                [ 32%]
ariba/tests/clusters_test.py ................                            [ 36%]
ariba/tests/common_test.py ..                                            [ 37%]
ariba/tests/external_progs_test.py .                                     [ 37%]
ariba/tests/faidx_test.py .                                              [ 37%]
ariba/tests/flag_test.py .......                                         [ 39%]
ariba/tests/histogram_test.py ....                                       [ 41%]
ariba/tests/link_test.py .........                                       [ 43%]
ariba/tests/mapping_test.py .......                                      [ 45%]
ariba/tests/megares_data_finder_test.py ..                               [ 46%]
ariba/tests/megares_zip_parser_test.py .....                             [ 47%]
ariba/tests/mic_plotter_test.py .............                            [ 51%]
ariba/tests/mlst_profile_test.py ....                                    [ 52%]
ariba/tests/mlst_reporter_test.py .....                                  [ 53%]
ariba/tests/pubmlst_getter_test.py ...                                   [ 54%]
ariba/tests/pubmlst_ref_preparer_test.py .F                              [ 55%]
ariba/tests/read_filter_test.py .                                        [ 55%]
ariba/tests/read_store_test.py .......                                   [ 57%]
ariba/tests/ref_genes_getter_test.py .                                   [ 57%]
ariba/tests/ref_preparer_test.py .....                                   [ 58%]
ariba/tests/ref_seq_chooser_test.py .......                              [ 60%]
ariba/tests/reference_data_test.py ..............................        [ 69%]
ariba/tests/report_filter_test.py .................                      [ 74%]
ariba/tests/report_flag_expander_test.py .                               [ 74%]
ariba/tests/samtools_variants_test.py .......                            [ 76%]
ariba/tests/scaffold_graph_test.py .....                                 [ 77%]
ariba/tests/sequence_metadata_test.py .....                              [ 79%]
ariba/tests/sequence_variant_test.py .......                             [ 81%]
ariba/tests/summary_cluster_test.py .......................              [ 87%]
ariba/tests/summary_cluster_variant_test.py ....                         [ 88%]
ariba/tests/summary_sample_test.py ....                                  [ 89%]
ariba/tests/summary_test.py ....................                         [ 95%]
ariba/tests/tb_test.py .......                                           [ 97%]
ariba/tests/test_refdata_query.py .....                                  [ 98%]
ariba/tests/versions_test.py .                                           [ 99%]
ariba/tests/vfdb_parser_test.py ...                                      [100%]

=================================== FAILURES ===================================
_____ TestPubmlstRefPreparer.test_load_fasta_files_and_write_clusters_file _____

self = <ariba.tests.pubmlst_ref_preparer_test.TestPubmlstRefPreparer testMethod=test_load_fasta_files_and_write_clusters_file>

    def test_load_fasta_files_and_write_clusters_file(self):
        '''test _load_fasta_files_and_write_clusters_file'''
        indir = os.path.join(data_dir, 'pubmlst_ref_prepare.test_load_fa_and_clusters.in')
        outdir = 'tmp.test.pubmlst_ref_prepare.test_load_fa_and_clusters'
        os.mkdir(outdir)
>       r_prep = pubmlst_ref_preparer.PubmlstRefPreparer('species', outdir)

ariba/tests/pubmlst_ref_preparer_test.py:35: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
ariba/pubmlst_ref_preparer.py:19: in __init__
    self.extern_progs, version_report_lines = versions.get_all_versions()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

raise_error = True, using_spades = True

    def get_all_versions(raise_error=True, using_spades=True):
        extern_progs = external_progs.ExternalProgs(fail_on_error=False, using_spades=using_spades)
    
        report_lines = [
            'ARIBA version: ' + ariba_version,
            '\nExternal dependencies:',
            '\n'.join(extern_progs.version_report),
            '\nExternal dependencies OK: ' + str(extern_progs.all_deps_ok),
            '\nPython version:',
            str(sys.version),
            '\nPython packages:',
        ]
    
        python_packages_ok = True
    
        for package in ['ariba', 'bs4', 'dendropy', 'pyfastaq', 'pymummer', 'pysam']:
            try:
                exec('import ' + package)
                version = eval(package + '.__version__')
                path = eval(package + '.__file__')
            except:
                version = 'NOT_FOUND'
                path = 'NOT_FOUND'
                python_packages_ok = False
    
            if version != 'NOT_FOUND':
                if package in package_min_versions and LooseVersion(version) < LooseVersion(package_min_versions[package]):
                    version += '... THIS IS TOO LOW. Needs>=' + package_min_versions[package]
                    python_packages_ok = False
                elif package in package_max_versions and LooseVersion(version) > package_max_versions[package]:
                    version += '...THIS IS TOO HIGH. Needs <=' + package_max_versions[package]
                    python_packages_ok = False
    
            report_lines.append(package + '\t' + version + '\t' + path)
    
        all_ok = extern_progs.all_deps_ok and python_packages_ok
    
        report_lines.extend([
            '\nPython packages OK: ' + str(python_packages_ok),
            '\nEverything looks OK: ' + str(all_ok),
        ])
    
        if raise_error and not all_ok:
            print(*report_lines, sep='\n', file=sys.stderr)
            print('Some dependencies not satisfied. Cannot continue.', file=sys.stderr)
>           sys.exit(1)
E           SystemExit: 1

ariba/versions.py:65: SystemExit
----------------------------- Captured stderr call -----------------------------
WARNING: spades not found in path. Looked for spades.py
ARIBA version: local

External dependencies:
bowtie2	2.5.4	/usr/bin/bowtie2
cdhit	4.8.1	/usr/bin/cd-hit-est
nucmer	3.1	/usr/bin/nucmer
spades	NA	NOT_FOUND

External dependencies OK: True

Python version:
3.13.0 (main, Oct  7 2024, 21:58:50) [GCC 14.2.0]

Python packages:
ariba	NOT_FOUND	NOT_FOUND
bs4	NOT_FOUND	NOT_FOUND
dendropy	NOT_FOUND	NOT_FOUND
pyfastaq	NOT_FOUND	NOT_FOUND
pymummer	NOT_FOUND	NOT_FOUND
pysam	NOT_FOUND	NOT_FOUND

Python packages OK: False

Everything looks OK: False
Some dependencies not satisfied. Cannot continue.
=============================== warnings summary ===============================
ariba/__init__.py:1
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_ariba/build/ariba/__init__.py:1: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import get_distribution

../../../../../../usr/lib/python3/dist-packages/pyfastaq/__init__.py:3
  /usr/lib/python3/dist-packages/pyfastaq/__init__.py:3: DeprecationWarning: Unimplemented abstract methods {'locate_file', 'read_text'}
    __version__ = Distribution().from_name('pyfastaq').version

ariba/external_progs.py:34
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_ariba/build/ariba/external_progs.py:34: SyntaxWarning: invalid escape sequence '\.'
    'cdhit': ('', re.compile('CD-HIT version ([0-9\.]+) \(')),

ariba/external_progs.py:35
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_ariba/build/ariba/external_progs.py:35: SyntaxWarning: invalid escape sequence '\.'
    'nucmer': ('--version', re.compile('([0-9]+\.[0-9\.]+.*$)')),

ariba/external_progs.py:36
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_ariba/build/ariba/external_progs.py:36: SyntaxWarning: invalid escape sequence '\.'
    'spades': ('--version', re.compile('SPAdes.*v([0-9\.]+)'))

.pybuild/cpython3_3.13_ariba/build/ariba/tests/mic_plotter_test.py::TestMicPlotter::test_get_colours
.pybuild/cpython3_3.13_ariba/build/ariba/tests/mic_plotter_test.py::TestMicPlotter::test_get_colours
.pybuild/cpython3_3.13_ariba/build/ariba/tests/mic_plotter_test.py::TestMicPlotter::test_get_colours
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_ariba/build/ariba/mic_plotter.py:222: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.
    cmap = cmx.get_cmap(colormap)

.pybuild/cpython3_3.13_ariba/build/ariba/tests/mic_plotter_test.py::TestMicPlotter::test_get_colours
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_ariba/build/ariba/mic_plotter.py:206: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.
    cmap = cmx.get_cmap(colormap)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
=========================== short test summary info ============================
FAILED ariba/tests/pubmlst_ref_preparer_test.py::TestPubmlstRefPreparer::test_load_fasta_files_and_write_clusters_file
======= 1 failed, 353 passed, 2 skipped, 9 warnings in 79.55s (0:01:19) ========
E: pybuild pybuild:389: test: plugin distutils failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_ariba/build; python3.13 -m pytest 
I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ariba/build; python3.12 -m pytest 
============================= test session starts ==============================
platform linux -- Python 3.12.7, pytest-8.3.3, pluggy-1.5.0
rootdir: /<<PKGBUILDDIR>>
plugins: typeguard-4.3.0
collected 356 items

ariba/tests/aln_to_metadata_test.py ....................                 [  5%]
ariba/tests/assembly_compare_test.py ................                    [ 10%]
ariba/tests/assembly_test.py ..ss.....                                   [ 12%]
ariba/tests/assembly_variants_test.py ...........                        [ 15%]
ariba/tests/bam_parse_test.py ......                                     [ 17%]
ariba/tests/card_record_test.py ........                                 [ 19%]
ariba/tests/cdhit_test.py ................                               [ 24%]
ariba/tests/cluster_test.py .............................                [ 32%]
ariba/tests/clusters_test.py ................                            [ 36%]
ariba/tests/common_test.py ..                                            [ 37%]
ariba/tests/external_progs_test.py .                                     [ 37%]
ariba/tests/faidx_test.py .                                              [ 37%]
ariba/tests/flag_test.py .......                                         [ 39%]
ariba/tests/histogram_test.py ....                                       [ 41%]
ariba/tests/link_test.py .........                                       [ 43%]
ariba/tests/mapping_test.py .......                                      [ 45%]
ariba/tests/megares_data_finder_test.py ..                               [ 46%]
ariba/tests/megares_zip_parser_test.py .....                             [ 47%]
ariba/tests/mic_plotter_test.py .............                            [ 51%]
ariba/tests/mlst_profile_test.py ....                                    [ 52%]
ariba/tests/mlst_reporter_test.py .....                                  [ 53%]
ariba/tests/pubmlst_getter_test.py ...                                   [ 54%]
ariba/tests/pubmlst_ref_preparer_test.py ..                              [ 55%]
ariba/tests/read_filter_test.py .                                        [ 55%]
ariba/tests/read_store_test.py .......                                   [ 57%]
ariba/tests/ref_genes_getter_test.py .                                   [ 57%]
ariba/tests/ref_preparer_test.py .....                                   [ 58%]
ariba/tests/ref_seq_chooser_test.py .......                              [ 60%]
ariba/tests/reference_data_test.py ..............................        [ 69%]
ariba/tests/report_filter_test.py .................                      [ 74%]
ariba/tests/report_flag_expander_test.py .                               [ 74%]
ariba/tests/samtools_variants_test.py .......                            [ 76%]
ariba/tests/scaffold_graph_test.py .....                                 [ 77%]
ariba/tests/sequence_metadata_test.py .....                              [ 79%]
ariba/tests/sequence_variant_test.py .......                             [ 81%]
ariba/tests/summary_cluster_test.py .......................              [ 87%]
ariba/tests/summary_cluster_variant_test.py ....                         [ 88%]
ariba/tests/summary_sample_test.py ....                                  [ 89%]
ariba/tests/summary_test.py ....................                         [ 95%]
ariba/tests/tb_test.py .......                                           [ 97%]
ariba/tests/test_refdata_query.py .....                                  [ 98%]
ariba/tests/versions_test.py .                                           [ 99%]
ariba/tests/vfdb_parser_test.py ...                                      [100%]

=============================== warnings summary ===============================
ariba/__init__.py:1
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ariba/build/ariba/__init__.py:1: DeprecationWarning: pkg_resources is deprecated as an API. See https://setuptools.pypa.io/en/latest/pkg_resources.html
    from pkg_resources import get_distribution

../../../../../../usr/lib/python3/dist-packages/pyfastaq/__init__.py:3
  /usr/lib/python3/dist-packages/pyfastaq/__init__.py:3: DeprecationWarning: Unimplemented abstract methods {'locate_file', 'read_text'}
    __version__ = Distribution().from_name('pyfastaq').version

ariba/external_progs.py:34
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ariba/build/ariba/external_progs.py:34: SyntaxWarning: invalid escape sequence '\.'
    'cdhit': ('', re.compile('CD-HIT version ([0-9\.]+) \(')),

ariba/external_progs.py:35
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ariba/build/ariba/external_progs.py:35: SyntaxWarning: invalid escape sequence '\.'
    'nucmer': ('--version', re.compile('([0-9]+\.[0-9\.]+.*$)')),

ariba/external_progs.py:36
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ariba/build/ariba/external_progs.py:36: SyntaxWarning: invalid escape sequence '\.'
    'spades': ('--version', re.compile('SPAdes.*v([0-9\.]+)'))

.pybuild/cpython3_3.12_ariba/build/ariba/tests/mic_plotter_test.py::TestMicPlotter::test_get_colours
.pybuild/cpython3_3.12_ariba/build/ariba/tests/mic_plotter_test.py::TestMicPlotter::test_get_colours
.pybuild/cpython3_3.12_ariba/build/ariba/tests/mic_plotter_test.py::TestMicPlotter::test_get_colours
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ariba/build/ariba/mic_plotter.py:222: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.
    cmap = cmx.get_cmap(colormap)

.pybuild/cpython3_3.12_ariba/build/ariba/tests/mic_plotter_test.py::TestMicPlotter::test_get_colours
  /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_ariba/build/ariba/mic_plotter.py:206: MatplotlibDeprecationWarning: The get_cmap function was deprecated in Matplotlib 3.7 and will be removed two minor releases later. Use ``matplotlib.colormaps[name]`` or ``matplotlib.colormaps.get_cmap(obj)`` instead.
    cmap = cmx.get_cmap(colormap)

-- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html
============ 354 passed, 2 skipped, 9 warnings in 81.52s (0:01:21) =============
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.13 3.12" returned exit code 13
make: *** [debian/rules:10: binary-arch] Error 25
dpkg-buildpackage: error: debian/rules binary-arch subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2024-10-20T18:34:37Z

If required, the full build log is available here (for the next 30 days):
https://debusine.debian.net/artifact/872797/

This bug has been filed at "normal" severity, as we haven't started the
transition to add 3.13 as a supported version, yet. This will be raised to RC
as soon as that happens, hopefully well before trixie.

Thanks,

Stefano



More information about the Debian-med-packaging mailing list