Source: python-testfixtures Version: 8.3.0-1 Severity: normal User: debian-pyt...@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: testfixtures/tests/test_time.py .............................. [ 98%] testfixtures/tests/test_twisted.py ............ [ 99%] testfixtures/tests/test_wrap.py .............. [100%] =================================== FAILURES =================================== _ TestReplaceWithInterestingOriginsNotStrict.test_invalid_attribute_on_instance_of_slotted_class _ self = <testfixtures.tests.test_replace.TestReplaceWithInterestingOriginsNotStrict object at 0xffff9d9d85a0> def test_invalid_attribute_on_instance_of_slotted_class(self): obj = OriginE() assert not hasattr(obj, '__dict__') replace_ = Replacer() with ShouldRaise(AttributeError("'OriginE' object has no attribute 'bad'")): > replace_(obj, name='bad', replacement=42, strict=self.strict) testfixtures/tests/test_replace.py:1366: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ testfixtures/replace.py:143: in __call__ self._replace(resolved, replacement_to_use) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <testfixtures.replace.Replacer object at 0xffff9cd013b0> resolved = <Resolved: <not_there>>, value = 42 def _replace(self, resolved: Resolved, value): if value is not_there: if resolved.setter is setattr: try: delattr(resolved.container, resolved.name) except AttributeError: pass if resolved.setter is setitem: try: del resolved.container[resolved.name] except KeyError: pass else: > resolved.setter(resolved.container, resolved.name, value) E AttributeError: 'OriginE' object has no attribute 'bad' and no __dict__ for setting new attributes testfixtures/replace.py:48: AttributeError During handling of the above exception, another exception occurred: self = <testfixtures.tests.test_replace.TestReplaceWithInterestingOriginsNotStrict object at 0xffff9d9d85a0> def test_invalid_attribute_on_instance_of_slotted_class(self): obj = OriginE() assert not hasattr(obj, '__dict__') replace_ = Replacer() > with ShouldRaise(AttributeError("'OriginE' object has no attribute > 'bad'")): E AssertionError: AttributeError("'OriginE' object has no attribute 'bad'") (expected) != AttributeError("'OriginE' object has no attribute 'bad' and no __dict__ for setting new attributes") (raised) testfixtures/tests/test_replace.py:1365: AssertionError =========================== short test summary info ============================ FAILED testfixtures/tests/test_replace.py::TestReplaceWithInterestingOriginsNotStrict::test_invalid_attribute_on_instance_of_slotted_class ======================== 1 failed, 1453 passed in 3.17s ======================== E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_testfixtures/build; python3.13 -m pytest --ignore docs/.build I: pybuild base:311: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_testfixtures/build; python3.12 -m pytest --ignore docs/.build ============================= test session starts ============================== platform linux -- Python 3.12.6, pytest-8.3.3, pluggy-1.5.0 django: settings: testfixtures.tests.test_django.settings (from ini) rootdir: /<<PKGBUILDDIR>>/.pybuild/cpython3_3.12_testfixtures/build configfile: pytest.ini plugins: django-4.5.2, typeguard-4.3.0 collected 1454 items testfixtures/tests/test_django/test_compare.py . [ 0%] docs/comparing.txt ..................................................... [ 3%] ............................................................. [ 7%] docs/datetime.txt ...................................................... [ 11%] ...... [ 12%] docs/django.txt .......... [ 12%] docs/exceptions.txt ................ [ 13%] docs/files.txt ......................................................... [ 17%] ............................................ [ 20%] docs/installation.txt .. [ 20%] docs/logging.txt ....................................................... [ 24%] [ 24%] docs/mocking.txt ....................................................... [ 28%] .................................................. [ 31%] docs/streams.txt ........ [ 32%] docs/utilities.txt .............. [ 33%] docs/warnings.txt ..................... [ 34%] testfixtures/tests/test_compare.py ..................................... [ 37%] ........................................................................ [ 42%] ........................................................................ [ 47%] ...................... [ 48%] testfixtures/tests/test_comparison.py .................................. [ 51%] ............................. [ 53%] testfixtures/tests/test_date.py .............................. [ 55%] testfixtures/tests/test_datetime.py .................................... [ 57%] ............. [ 58%] testfixtures/tests/test_diff.py .. [ 58%] testfixtures/tests/test_django/test_compare.py ........ [ 59%] testfixtures/tests/test_django/test_shouldraise.py .. [ 59%] testfixtures/tests/test_generator.py .. [ 59%] testfixtures/tests/test_log_capture.py .................. [ 60%] testfixtures/tests/test_logcapture.py .................................. [ 63%] ....... [ 63%] testfixtures/tests/test_mappingcomparison.py ........................... [ 65%] .. [ 65%] testfixtures/tests/test_mock.py ............. [ 66%] testfixtures/tests/test_outputcapture.py ........... [ 67%] testfixtures/tests/test_popen.py ....................................... [ 69%] ................. [ 71%] testfixtures/tests/test_popen_docs.py ............. [ 72%] testfixtures/tests/test_rangecomparison.py ............................. [ 74%] ............ [ 74%] testfixtures/tests/test_replace.py ..................................... [ 77%] ................................................................ [ 81%] testfixtures/tests/test_replacer.py ......... [ 82%] testfixtures/tests/test_roundcomparison.py ............................. [ 84%] ......... [ 85%] testfixtures/tests/test_sequencecomparison.py .......................... [ 86%] ........... [ 87%] testfixtures/tests/test_should_raise.py ................................ [ 89%] .......... [ 90%] testfixtures/tests/test_shouldwarn.py ................ [ 91%] testfixtures/tests/test_stringcomparison.py ............ [ 92%] testfixtures/tests/test_sybil.py ........ [ 92%] testfixtures/tests/test_tempdir.py ......... [ 93%] testfixtures/tests/test_tempdirectory.py ............................... [ 95%] ....... [ 96%] testfixtures/tests/test_time.py .............................. [ 98%] testfixtures/tests/test_twisted.py ............ [ 99%] testfixtures/tests/test_wrap.py .............. [100%] ============================= 1454 passed in 3.11s ============================= dh_auto_test: error: pybuild --test -i python{version} -p "3.13 3.12" returned exit code 13 make: *** [debian/rules:11: binary] Error 25 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2 -------------------------------------------------------------------------------- Build finished at 2024-09-19T08:47:29Z If required, the full build log is available here (for the next 30 days): https://debusine.debian.net/artifact/789608/ 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