[Debian-med-packaging] Bug#1082267: python-scitrack FTBFS with Python 3.13

Stefano Rivera stefanor at debian.org
Thu Sep 19 15:46:46 BST 2024


Source: python-scitrack
Version: 2021.5.3-3
Severity: normal
User: debian-python at lists.debian.org
Usertags: python3.13

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.

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

Log snippet:

dh_auto_test -- --system=custom --test-args="PYTHONPATH={build_dir} {interpreter} -m pytest -v"
I: pybuild base:311: PYTHONPATH=/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_scitrack/build python3.13 -m pytest -v
============================= test session starts ==============================
platform linux -- Python 3.13.0rc2, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3.13
cachedir: .pytest_cache
rootdir: /<<PKGBUILDDIR>>
configfile: pyproject.toml
plugins: typeguard-4.3.0
collecting ... collected 21 items

tests/test_logging.py::test_creates_path PASSED                          [  4%]
tests/test_logging.py::test_set_path_if_exists PASSED                    [  9%]
tests/test_logging.py::test_tracks_args PASSED                           [ 14%]
tests/test_logging.py::test_tracks_locals FAILED                         [ 19%]
tests/test_logging.py::test_package_inference PASSED                     [ 23%]
tests/test_logging.py::test_package_versioning PASSED                    [ 28%]
tests/test_logging.py::test_tracks_versions PASSED                       [ 33%]
tests/test_logging.py::test_caching PASSED                               [ 38%]
tests/test_logging.py::test_shutdown PASSED                              [ 42%]
tests/test_logging.py::test_tracks_versions_empty PASSED                 [ 47%]
tests/test_logging.py::test_tracks_versions_string PASSED                [ 52%]
tests/test_logging.py::test_get_version_for_package PASSED               [ 57%]
tests/test_logging.py::test_tracks_versions_module PASSED                [ 61%]
tests/test_logging.py::test_appending PASSED                             [ 66%]
tests/test_logging.py::test_mdsum_input PASSED                           [ 71%]
tests/test_logging.py::test_mdsum_output PASSED                          [ 76%]
tests/test_logging.py::test_logging_text PASSED                          [ 80%]
tests/test_logging.py::test_logfile_path PASSED                          [ 85%]
tests/test_logging.py::test_md5sum_text PASSED                           [ 90%]
tests/test_logging.py::test_get_text_hexdigest_invalid PASSED            [ 95%]
tests/test_logging.py::test_read_from_written PASSED                     [100%]

=================================== FAILURES ===================================
______________________________ test_tracks_locals ______________________________

    def test_tracks_locals():
        """details on local arguments should be present in log"""
        LOGGER = CachingLogger(create_dir=True)
        LOGGER.log_file_path = LOGFILE_NAME
    
        def track_func(a=1, b="abc"):
            LOGGER.log_args()
    
>       track_func()

tests/test_logging.py:89: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/test_logging.py:87: in track_func
    LOGGER.log_args()
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <scitrack.CachingLogger object at 0xffffaead2520>
args = {'a': 1, 'b': 'abc', 'LOGGER': <scitrack.CachingLogger object at 0xffffaead2520>}

    def log_args(self, args=None):
        """save arguments to file using label='params'
        Argument:
            - args: if None, uses inspect module to get locals
              from the calling frame"""
        if args is None:
            parent = inspect.currentframe().f_back
            args = inspect.getargvalues(parent).locals
    
        # remove args whose value is a CachingLogger
        for k in list(args):
            if type(args[k]) == self.__class__:
>               del args[k]
E               TypeError: cannot remove variables from FrameLocalsProxy

.pybuild/cpython3_3.13_scitrack/build/scitrack/__init__.py:204: TypeError
------------------------------ Captured log call -------------------------------
INFO     root:__init__.py:254 system_details : system=#1 SMP Debian 6.1.106-3 (2024-08-26)
INFO     root:__init__.py:255 python : 3.13.0rc2
INFO     root:__init__.py:256 user : debusine-worker
INFO     root:__init__.py:257 command_string : /usr/lib/python3/dist-packages/pytest/__main__.py -v
=========================== short test summary info ============================
FAILED tests/test_logging.py::test_tracks_locals - TypeError: cannot remove v...
========================= 1 failed, 20 passed in 0.15s =========================
E: pybuild pybuild:389: test: plugin custom failed with: exit code=1: PYTHONPATH=/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_scitrack/build python3.13 -m pytest -v
I: pybuild base:311: PYTHONPATH=/<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_scitrack/build python3.12 -m pytest -v
============================= test session starts ==============================
platform linux -- Python 3.12.6, pytest-8.3.3, pluggy-1.5.0 -- /usr/bin/python3.12
cachedir: .pytest_cache
rootdir: /<<PKGBUILDDIR>>
configfile: pyproject.toml
plugins: typeguard-4.3.0
collecting ... collected 21 items

tests/test_logging.py::test_creates_path PASSED                          [  4%]
tests/test_logging.py::test_set_path_if_exists PASSED                    [  9%]
tests/test_logging.py::test_tracks_args PASSED                           [ 14%]
tests/test_logging.py::test_tracks_locals PASSED                         [ 19%]
tests/test_logging.py::test_package_inference PASSED                     [ 23%]
tests/test_logging.py::test_package_versioning PASSED                    [ 28%]
tests/test_logging.py::test_tracks_versions PASSED                       [ 33%]
tests/test_logging.py::test_caching PASSED                               [ 38%]
tests/test_logging.py::test_shutdown PASSED                              [ 42%]
tests/test_logging.py::test_tracks_versions_empty PASSED                 [ 47%]
tests/test_logging.py::test_tracks_versions_string PASSED                [ 52%]
tests/test_logging.py::test_get_version_for_package PASSED               [ 57%]
tests/test_logging.py::test_tracks_versions_module PASSED                [ 61%]
tests/test_logging.py::test_appending PASSED                             [ 66%]
tests/test_logging.py::test_mdsum_input PASSED                           [ 71%]
tests/test_logging.py::test_mdsum_output PASSED                          [ 76%]
tests/test_logging.py::test_logging_text PASSED                          [ 80%]
tests/test_logging.py::test_logfile_path PASSED                          [ 85%]
tests/test_logging.py::test_md5sum_text PASSED                           [ 90%]
tests/test_logging.py::test_get_text_hexdigest_invalid PASSED            [ 95%]
tests/test_logging.py::test_read_from_written PASSED                     [100%]

============================== 21 passed in 0.15s ==============================
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.13 3.12" --system=custom "--test-args=PYTHONPATH={build_dir} {interpreter} -m pytest -v" returned exit code 13
make[1]: *** [debian/rules:12: override_dh_auto_test] Error 25
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
make: *** [debian/rules:8: binary] Error 2
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------
Build finished at 2024-09-19T07:43:25Z


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

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