Package: python3-attr Version: 23.2.0-1 Severity: serious Tags: ftbfs Justification: ftbfs X-Debbugs-Cc: ltw...@debian.org
Dear Maintainer, It seems that python3-attr cannot be built at the present moment. -- System Information: Debian Release: trixie/sid APT prefers unstable APT policy: (500, 'unstable'), (500, 'testing') Architecture: amd64 (x86_64) Foreign Architectures: i386 Kernel: Linux 6.6.15-amd64 (SMP w/4 CPU threads; PREEMPT) Locale: LANG=it_IT.UTF-8, LC_CTYPE=it_IT.UTF-8 (charmap=UTF-8), LANGUAGE=it Shell: /bin/sh linked to /usr/bin/dash Init: systemd (via /run/systemd/system) LSM: AppArmor: enabled Versions of packages python3-attr depends on: ii python3 [python3-supported-min] 3.11.6-1 ii python3-importlib-metadata 4.12.0-1 python3-attr recommends no packages. Versions of packages python3-attr suggests: pn python-attr-doc <none> -- no debconf information
dpkg-buildpackage dpkg-buildpackage: info: source package python-attrs dpkg-buildpackage: info: source version 23.2.0-1 dpkg-buildpackage: info: source distribution unstable dpkg-buildpackage: info: source changed by Timo Röhling <roehl...@debian.org> dpkg-buildpackage: info: host architecture amd64 dpkg-source --before-build . debian/rules clean dh clean --buildsystem=pybuild dh_auto_clean -O--buildsystem=pybuild dh_autoreconf_clean -O--buildsystem=pybuild dh_clean -O--buildsystem=pybuild dpkg-source -b . dpkg-source: info: using source format '3.0 (quilt)' dpkg-source: info: building python-attrs using existing ./python-attrs_23.2.0.orig.tar.gz dpkg-source: info: using patch list from debian/patches/series dpkg-source: info: building python-attrs in python-attrs_23.2.0-1.debian.tar.xz dpkg-source: info: building python-attrs in python-attrs_23.2.0-1.dsc debian/rules binary dh binary --buildsystem=pybuild dh_update_autotools_config -O--buildsystem=pybuild dh_autoreconf -O--buildsystem=pybuild dh_auto_configure -O--buildsystem=pybuild dh_auto_build -O--buildsystem=pybuild I: pybuild plugin_pyproject:129: Building wheel for python3.12 with "build" module I: pybuild base:305: python3.12 -m build --skip-dependency-check --no-isolation --wheel --outdir /tmp/python-attrs-23.2.0/.pybuild/cpython3_3.12_attr * Building wheel... Successfully built attrs-23.2.0-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.12 with "installer" module I: pybuild plugin_pyproject:129: Building wheel for python3.11 with "build" module I: pybuild base:305: python3.11 -m build --skip-dependency-check --no-isolation --wheel --outdir /tmp/python-attrs-23.2.0/.pybuild/cpython3_3.11_attr * Building wheel... Successfully built attrs-23.2.0-py3-none-any.whl I: pybuild plugin_pyproject:144: Unpacking wheel built for python3.11 with "installer" module debian/rules execute_after_dh_auto_build make[1]: Entering directory '/tmp/python-attrs-23.2.0' PYTHONPATH=/tmp/python-attrs-23.2.0/.pybuild/cpython3_3.11_attr/build \ http_proxy='127.0.0.1:9' \ https_proxy='127.0.0.1:9' \ python3 -m sphinx -N -b html docs/ /tmp/python-attrs-23.2.0/.pybuild/docs/html/ Running Sphinx v7.2.6 making output directory... done myst v2.0.0: MdParserConfig(commonmark_only=False, gfm_only=False, enable_extensions={'colon_fence', 'deflist', 'smartquotes'}, disable_syntax=[], all_links_external=False, url_schemes=('http', 'https', 'mailto', 'ftp'), ref_domains=None, fence_as_directive=set(), number_code_blocks=[], title_to_header=False, heading_anchors=0, heading_slug_func=None, html_meta={}, footnote_transition=True, words_per_minute=200, substitutions={}, linkify_fuzzy_links=True, dmath_allow_labels=True, dmath_allow_space=True, dmath_allow_digits=True, dmath_double_inline=False, update_mathjax=True, mathjax_classes='tex2jax_process|mathjax_process|math|output_area', enable_checkboxes=False, suppress_warnings=[], highlight_code_blocks=True) loading intersphinx inventory from /usr/share/doc/python3-doc/html/objects.inv... building [mo]: targets for 0 po files that are out of date writing output... building [html]: targets for 16 source files that are out of date updating environment: [new config] 16 added, 0 changed, 0 removed reading sources... [100%] why /tmp/python-attrs-23.2.0/docs/changelog.md:5: WARNING: Unknown directive type: 'towncrier-draft-entries' [myst.directive_unknown] looking for now-outdated files... none found pickling environment... done checking consistency... done preparing documents... done copying assets... copying static files... done copying extra files... done done writing output... [100%] why generating indices... genindex py-modindex done writing additional pages... search done copying images... [100%] _static/attrs_logo.png dumping search index in English (code: en)... done dumping object inventory... done build succeeded, 1 warning. The HTML pages are in .pybuild/docs/html. make[1]: Leaving directory '/tmp/python-attrs-23.2.0' dh_auto_test -O--buildsystem=pybuild I: pybuild base:305: cd /tmp/python-attrs-23.2.0/.pybuild/cpython3_3.12_attr/build; python3.12 -m pytest tests ================================================================================= test session starts ================================================================================== platform linux -- Python 3.12.2, pytest-8.0.2, pluggy-1.4.0 rootdir: /tmp/python-attrs-23.2.0 configfile: pyproject.toml plugins: hypothesis-6.98.12 collected 1326 items / 1 skipped tests/test_abc.py .... [ 0%] tests/test_annotations.py ............................................... [ 3%] tests/test_cmp.py .............................................................................. [ 9%] tests/test_compat.py ... [ 9%] tests/test_config.py .... [ 10%] tests/test_converters.py ...................... [ 11%] tests/test_dunders.py ................................................................................................. [ 19%] tests/test_filters.py ................................. [ 21%] tests/test_funcs.py .....................................F.............. [ 25%] tests/test_functional.py ....................................................................................................................................................... [ 37%] ................................................................................................................................................................................ [ 50%] ............................................................................. [ 56%] tests/test_hooks.py .......... [ 56%] tests/test_import.py . [ 56%] tests/test_init_subclass.py .... [ 57%] tests/test_make.py ............................................................................................................................................................. [ 69%] .............................................................................................s....... [ 76%] tests/test_next_gen.py ................................. [ 79%] tests/test_packaging.py ...................... [ 80%] tests/test_pattern_matching.py ..... [ 81%] tests/test_pyright.py ss [ 81%] tests/test_setattr.py ..................x................. [ 84%] tests/test_slots.py .............s..................................... [ 87%] tests/test_utils.py .. [ 88%] tests/test_validators.py ....................................................................................................................................................... [ 99%] . [ 99%] tests/test_version_info.py ...... [100%] ======================================================================================= FAILURES ======================================================================================= ________________________________________________________________________________ TestAssoc.test_unknown ________________________________________________________________________________ self = <tests.test_funcs.TestAssoc object at 0x7f0bc3a6d010>, C = <class 'tests.strategies.HypClass'> @given(simple_classes()) def test_unknown(self, C): """ Wanting to change an unknown attribute raises an AttrsAttributeNotFoundError. """ # No generated class will have a four letter attribute. with pytest.raises( AttrsAttributeNotFoundError ) as e, pytest.deprecated_call(): > assoc(C(), aaaa=2) tests/test_funcs.py:606: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ inst = HypClass(), changes = {'aaaa': 2}, new = HypClass(), attrs = (), k = 'aaaa', v = 2, a = NOTHING, msg = "aaaa is not an attrs attribute on <class 'tests.strategies.HypClass'>." def assoc(inst, **changes): """ Copy *inst* and apply *changes*. This is different from `evolve` that applies the changes to the arguments that create the new instance. `evolve`'s behavior is preferable, but there are `edge cases`_ where it doesn't work. Therefore `assoc` is deprecated, but will not be removed. .. _`edge cases`: https://github.com/python-attrs/attrs/issues/251 :param inst: Instance of a class with *attrs* attributes. :param changes: Keyword changes in the new copy. :return: A copy of inst with *changes* incorporated. :raise attrs.exceptions.AttrsAttributeNotFoundError: If *attr_name* couldn't be found on *cls*. :raise attrs.exceptions.NotAnAttrsClassError: If *cls* is not an *attrs* class. .. deprecated:: 17.1.0 Use `attrs.evolve` instead if you can. This function will not be removed du to the slightly different approach compared to `attrs.evolve`. """ new = copy.copy(inst) attrs = fields(inst.__class__) for k, v in changes.items(): a = getattr(attrs, k, NOTHING) if a is NOTHING: msg = f"{k} is not an attrs attribute on {new.__class__}." > raise AttrsAttributeNotFoundError(msg) E attr.exceptions.AttrsAttributeNotFoundError: aaaa is not an attrs attribute on <class 'tests.strategies.HypClass'>. attr/_funcs.py:358: AttrsAttributeNotFoundError During handling of the above exception, another exception occurred: self = <tests.test_funcs.TestAssoc object at 0x7f0bc3a6d010> @given(simple_classes()) > def test_unknown(self, C): tests/test_funcs.py:597: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.test_funcs.TestAssoc object at 0x7f0bc3a6d010>, C = <class 'tests.strategies.HypClass'> @given(simple_classes()) def test_unknown(self, C): """ Wanting to change an unknown attribute raises an AttrsAttributeNotFoundError. """ # No generated class will have a four letter attribute. > with pytest.raises( AttrsAttributeNotFoundError ) as e, pytest.deprecated_call(): E Failed: DID NOT WARN. No warnings of type (<class 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class 'FutureWarning'>) were emitted. E Emitted warnings: []. E Falsifying example: test_unknown( E self=<tests.test_funcs.TestAssoc object at 0x7f0bc3a6d010>, E C=tests.strategies.HypClass, # or any other generated value E ) tests/test_funcs.py:603: Failed ====================================================================================== XFAILURES ======================================================================================= __________________________________________________________________________ TestSetAttr.test_slotted_confused ___________________________________________________________________________ self = <tests.test_setattr.TestSetAttr object at 0x7f0bc3979a00> @pytest.mark.xfail(raises=attr.exceptions.FrozenAttributeError) def test_slotted_confused(self): """ If we have a in-between non-attrs class, setattr reset detection should still work, but currently doesn't. It works with dict classes because we can look the finished class and patch it. With slotted classes we have to deduce it ourselves. """ @attr.s(slots=True) class A: x = attr.ib(on_setattr=setters.frozen) class B(A): pass @attr.s(slots=True) class C(B): x = attr.ib() > C(1).x = 2 tests/test_setattr.py:312: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <attrs generated init tests.test_setattr.TestSetAttr.test_slotted_confused.<locals>.C>:2: in __init__ self.x = x attr/_make.py:1180: in __setattr__ nval = hook(self, a, val) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ = <[AttributeError("'C' object has no attribute 'x'") raised in repr()] C object at 0x7f0bc12c4b10> __ = Attribute(name='x', default=NOTHING, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash..., type=None, converter=None, kw_only=False, inherited=False, on_setattr=<function frozen at 0x7f0bc54149a0>, alias='x') ___ = 1 def frozen(_, __, ___): """ Prevent an attribute to be modified. .. versionadded:: 20.1.0 """ > raise FrozenAttributeError() E attr.exceptions.FrozenAttributeError attr/setters.py:36: FrozenAttributeError =============================================================================== short test summary info ================================================================================ SKIPPED [1] tests/test_3rd_party.py:14: could not import 'cloudpickle': No module named 'cloudpickle' SKIPPED [1] tests/test_make.py:2476: Pre-3.10 only. SKIPPED [1] tests/test_pyright.py:42: Requires pyright. SKIPPED [1] tests/test_pyright.py:93: Requires pyright. SKIPPED [1] tests/test_slots.py:497: slots without weakref_slot should only work on PyPy XFAIL tests/test_setattr.py::TestSetAttr::test_slotted_confused FAILED tests/test_funcs.py::TestAssoc::test_unknown - Failed: DID NOT WARN. No warnings of type (<class 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class 'FutureWarning'>) were emitted. ================================================================ 1 failed, 1320 passed, 5 skipped, 1 xfailed in 25.27s ================================================================= E: pybuild pybuild:391: test: plugin pyproject failed with: exit code=1: cd /tmp/python-attrs-23.2.0/.pybuild/cpython3_3.12_attr/build; python3.12 -m pytest tests I: pybuild base:305: cd /tmp/python-attrs-23.2.0/.pybuild/cpython3_3.11_attr/build; python3.11 -m pytest tests ================================================================================= test session starts ================================================================================== platform linux -- Python 3.11.8, pytest-8.0.2, pluggy-1.4.0 rootdir: /tmp/python-attrs-23.2.0 configfile: pyproject.toml plugins: hypothesis-6.98.12 collected 1326 items / 1 skipped tests/test_abc.py .... [ 0%] tests/test_annotations.py ............................................... [ 3%] tests/test_cmp.py .............................................................................. [ 9%] tests/test_compat.py ... [ 9%] tests/test_config.py .... [ 10%] tests/test_converters.py ...................... [ 11%] tests/test_dunders.py ................................................................................................. [ 19%] tests/test_filters.py ................................. [ 21%] tests/test_funcs.py .....................................F.............. [ 25%] tests/test_functional.py ....................................................................................................................................................... [ 37%] ................................................................................................................................................................................ [ 50%] ............................................................................. [ 56%] tests/test_hooks.py .......... [ 56%] tests/test_import.py . [ 56%] tests/test_init_subclass.py .... [ 57%] tests/test_make.py ............................................................................................................................................................. [ 69%] .............................................................................................s....... [ 76%] tests/test_next_gen.py ................................. [ 79%] tests/test_packaging.py ...................... [ 80%] tests/test_pattern_matching.py ..... [ 81%] tests/test_pyright.py ss [ 81%] tests/test_setattr.py ..................x................. [ 84%] tests/test_slots.py .............s..................................... [ 87%] tests/test_utils.py .. [ 88%] tests/test_validators.py ....................................................................................................................................................... [ 99%] . [ 99%] tests/test_version_info.py ...... [100%] ======================================================================================= FAILURES ======================================================================================= ________________________________________________________________________________ TestAssoc.test_unknown ________________________________________________________________________________ self = <tests.test_funcs.TestAssoc object at 0x7faa60dc0390>, C = <class 'tests.strategies.HypClass'> @given(simple_classes()) def test_unknown(self, C): """ Wanting to change an unknown attribute raises an AttrsAttributeNotFoundError. """ # No generated class will have a four letter attribute. with pytest.raises( AttrsAttributeNotFoundError ) as e, pytest.deprecated_call(): > assoc(C(), aaaa=2) tests/test_funcs.py:606: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ inst = HypClass(), changes = {'aaaa': 2}, new = HypClass(), attrs = (), k = 'aaaa', v = 2, a = NOTHING, msg = "aaaa is not an attrs attribute on <class 'tests.strategies.HypClass'>." def assoc(inst, **changes): """ Copy *inst* and apply *changes*. This is different from `evolve` that applies the changes to the arguments that create the new instance. `evolve`'s behavior is preferable, but there are `edge cases`_ where it doesn't work. Therefore `assoc` is deprecated, but will not be removed. .. _`edge cases`: https://github.com/python-attrs/attrs/issues/251 :param inst: Instance of a class with *attrs* attributes. :param changes: Keyword changes in the new copy. :return: A copy of inst with *changes* incorporated. :raise attrs.exceptions.AttrsAttributeNotFoundError: If *attr_name* couldn't be found on *cls*. :raise attrs.exceptions.NotAnAttrsClassError: If *cls* is not an *attrs* class. .. deprecated:: 17.1.0 Use `attrs.evolve` instead if you can. This function will not be removed du to the slightly different approach compared to `attrs.evolve`. """ new = copy.copy(inst) attrs = fields(inst.__class__) for k, v in changes.items(): a = getattr(attrs, k, NOTHING) if a is NOTHING: msg = f"{k} is not an attrs attribute on {new.__class__}." > raise AttrsAttributeNotFoundError(msg) E attr.exceptions.AttrsAttributeNotFoundError: aaaa is not an attrs attribute on <class 'tests.strategies.HypClass'>. attr/_funcs.py:358: AttrsAttributeNotFoundError During handling of the above exception, another exception occurred: self = <tests.test_funcs.TestAssoc object at 0x7faa60dc0390> @given(simple_classes()) > def test_unknown(self, C): tests/test_funcs.py:597: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ self = <tests.test_funcs.TestAssoc object at 0x7faa60dc0390>, C = <class 'tests.strategies.HypClass'> @given(simple_classes()) def test_unknown(self, C): """ Wanting to change an unknown attribute raises an AttrsAttributeNotFoundError. """ # No generated class will have a four letter attribute. > with pytest.raises( AttrsAttributeNotFoundError ) as e, pytest.deprecated_call(): E Failed: DID NOT WARN. No warnings of type (<class 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class 'FutureWarning'>) were emitted. E Emitted warnings: []. E Falsifying example: test_unknown( E self=<tests.test_funcs.TestAssoc object at 0x7faa60dc0390>, E C=tests.strategies.HypClass, # or any other generated value E ) tests/test_funcs.py:603: Failed ====================================================================================== XFAILURES ======================================================================================= __________________________________________________________________________ TestSetAttr.test_slotted_confused ___________________________________________________________________________ self = <tests.test_setattr.TestSetAttr object at 0x7faa6018a610> @pytest.mark.xfail(raises=attr.exceptions.FrozenAttributeError) def test_slotted_confused(self): """ If we have a in-between non-attrs class, setattr reset detection should still work, but currently doesn't. It works with dict classes because we can look the finished class and patch it. With slotted classes we have to deduce it ourselves. """ @attr.s(slots=True) class A: x = attr.ib(on_setattr=setters.frozen) class B(A): pass @attr.s(slots=True) class C(B): x = attr.ib() > C(1).x = 2 tests/test_setattr.py:312: _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ <attrs generated init tests.test_setattr.TestSetAttr.test_slotted_confused.<locals>.C>:2: in __init__ self.x = x attr/_make.py:1180: in __setattr__ nval = hook(self, a, val) _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ = <[AttributeError("'C' object has no attribute 'x'") raised in repr()] C object at 0x7faa60092010> __ = Attribute(name='x', default=NOTHING, validator=None, repr=True, eq=True, eq_key=None, order=True, order_key=None, hash..., type=None, converter=None, kw_only=False, inherited=False, on_setattr=<function frozen at 0x7faa62770900>, alias='x') ___ = 1 def frozen(_, __, ___): """ Prevent an attribute to be modified. .. versionadded:: 20.1.0 """ > raise FrozenAttributeError() E attr.exceptions.FrozenAttributeError attr/setters.py:36: FrozenAttributeError =============================================================================== short test summary info ================================================================================ SKIPPED [1] tests/test_3rd_party.py:14: could not import 'cloudpickle': No module named 'cloudpickle' SKIPPED [1] tests/test_make.py:2476: Pre-3.10 only. SKIPPED [1] tests/test_pyright.py:42: Requires pyright. SKIPPED [1] tests/test_pyright.py:93: Requires pyright. SKIPPED [1] tests/test_slots.py:497: slots without weakref_slot should only work on PyPy XFAIL tests/test_setattr.py::TestSetAttr::test_slotted_confused FAILED tests/test_funcs.py::TestAssoc::test_unknown - Failed: DID NOT WARN. No warnings of type (<class 'DeprecationWarning'>, <class 'PendingDeprecationWarning'>, <class 'FutureWarning'>) were emitted. ================================================================ 1 failed, 1320 passed, 5 skipped, 1 xfailed in 20.27s ================================================================= E: pybuild pybuild:391: test: plugin pyproject failed with: exit code=1: cd /tmp/python-attrs-23.2.0/.pybuild/cpython3_3.11_attr/build; python3.11 -m pytest tests dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p "3.12 3.11" returned exit code 13 make: *** [debian/rules:6: binary] Error 255 dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2