Package: src:python-cattrs
Version: 25.2.0-1
Severity: serious
Tags: ftbfs forky sid

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/202510/

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-cattrs, so that this is still
visible in the BTS web page for this package.

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --with python3 --buildsystem=pybuild
   dh_auto_clean -O--buildsystem=pybuild
   dh_autoreconf_clean -O--buildsystem=pybuild
   dh_clean -O--buildsystem=pybuild
 debian/rules binary
dh binary --with python3 --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.13 with "build" 
module
I: pybuild base:311: python3.13 -m build --skip-dependency-check --no-isolation 
--wheel --outdir /<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_cattr  
* Building wheel...
Successfully built cattrs-25.2.0-py3-none-any.whl

[... snipped ...]

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        combined_attrs = [(_CountingAttr(counter=28522, _default=None, 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, a...e), 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, 
alias=None, metadata={}), just(HypClass()))]
        default    = Factory(factory=<class 'tests.untyped.HypClass'>, 
takes_self=False)
        nested_cl  = <class 'tests.untyped.HypClass'>
        tup        = ([(_CountingAttr(counter=28522, _default=None, repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, 
metadata={}), none())], (<class 'tests.untyped.HypClass'>, (), {}))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

attrs_and_strategy = [(_CountingAttr(counter=28522, _default=None, repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, a...e), repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, 
metadata={}), just(HypClass()))]
frozen = None

    def _create_hyp_class(
        attrs_and_strategy: list[tuple[_CountingAttr, 
st.SearchStrategy[PosArgs]]],
        frozen=None,
    ) -> SearchStrategy[AttrsAndArgs]:
        """
        A helper function for Hypothesis to generate attrs classes.
    
        The result is a tuple: an attrs class, a tuple of values to
        instantiate it, and a kwargs dict for kw-only attributes.
        """
    
        def key(t):
            return (t[0].default is not NOTHING, t[0].kw_only)
    
>       attrs_and_strat = sorted(attrs_and_strategy, key=key)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: '<' not supported between instances of 'NoneType' and 'bool'
E       while generating 'cl_and_vals' from one_of(recursive 
[too-long-redacted] eate_dataclass, frozen=False)))

attrs_and_strategy = [(_CountingAttr(counter=28522, _default=None, repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, a...e), repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, 
metadata={}), just(HypClass()))]
frozen     = None
key        = <function _create_hyp_class.<locals>.key at 0x7fa766633b00>

tests/untyped.py:182: TypeError
____________________ test_unmodified_generated_structuring _____________________

    @given(
>       cl_and_vals=nested_typed_classes(allow_nan=False)
                   ^^^
        | simple_typed_classes(allow_nan=False)
        | simple_typed_dataclasses(allow_nan=False),
        dv=...,
    )

f          = <function given.<locals>.run_test_as_given.<locals>.wrapped_test 
at 0x7fa768512c00>

tests/test_gen_dict.py:169: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/typed.py:954: in nested_typed_classes
    cl, strat, kwarg_strat = draw(
        allow_nan  = False
        defaults   = 'sometimes'
        draw       = <bound method ConjectureData.draw of ConjectureData(VALID, 
8 choices, frozen)>
        kw_only    = 'sometimes'
        min_attrs  = 0
        newtypes   = True
/usr/lib/python3/dist-packages/hypothesis/internal/conjecture/data.py:1212: in 
draw
    return unwrapped.do_draw(self)
           ^^^^^^^^^^^^^^^^^^^^^^^
        at_top_level = False
        label      = 18174192762908001753
        observability_enabled = <function observability_enabled at 
0x7fa768d8df80>
        observe_as = None
        self       = ConjectureData(VALID, 8 choices, frozen)
        start_time = None
        strategy   = recursive(lists(one_of(any_typed_attrs(), 
int_typed_attrs(), str_typed_attrs(), float_typed_attrs(allow_nan=False), 
fr...al(
    _create_hyp_nested_strategy,
    kw_only='sometimes',
    newtypes=True,
    allow_nan=False,
), max_leaves=20)
        to_jsonable = <function to_jsonable at 0x7fa768c5c400>
        unwrap_strategies = <function unwrap_strategies at 0x7fa768b0e3e0>
        unwrapped  = recursive(lists(one_of(any_typed_attrs(), 
int_typed_attrs(), str_typed_attrs(), float_typed_attrs(allow_nan=False), 
fr...al(
    _create_hyp_nested_strategy,
    kw_only='sometimes',
    newtypes=True,
    allow_nan=False,
), max_leaves=20)
/usr/lib/python3/dist-packages/hypothesis/strategies/_internal/recursive.py:113:
 in do_draw
    return data.draw(self.strategy)
           ^^^^^^^^^^^^^^^^^^^^^^^^
        count      = 0
        data       = ConjectureData(VALID, 8 choices, frozen)
        self       = recursive(lists(one_of(any_typed_attrs(), 
int_typed_attrs(), str_typed_attrs(), float_typed_attrs(allow_nan=False), 
fr...al(
    _create_hyp_nested_strategy,
    kw_only='sometimes',
    newtypes=True,
    allow_nan=False,
), max_leaves=20)
/usr/lib/python3/dist-packages/hypothesis/internal/conjecture/data.py:1212: in 
draw
    return unwrapped.do_draw(self)
           ^^^^^^^^^^^^^^^^^^^^^^^
        at_top_level = False
        label      = 17516538232186200840
        observability_enabled = <function observability_enabled at 
0x7fa768d8df80>
        observe_as = None
        self       = ConjectureData(VALID, 8 choices, frozen)
        start_time = None
        strategy   = one_of(LimitedStrategy(lists(one_of(any_typed_attrs(), 
int_typed_attrs(), str_typed_attrs(), float_typed_attrs(allow_n...(lst, 
key=lambda t: (t[0]._default is not NOTHING, 
t[0].kw_only))).flatmap(_create_hyp_class_and_strat)))))))))))))))))
        to_jsonable = <function to_jsonable at 0x7fa768c5c400>
        unwrap_strategies = <function unwrap_strategies at 0x7fa768b0e3e0>
        unwrapped  = one_of(LimitedStrategy(lists(one_of(any_typed_attrs(), 
int_typed_attrs(), str_typed_attrs(), float_typed_attrs(allow_n...(lst, 
key=lambda t: (t[0]._default is not NOTHING, 
t[0].kw_only))).flatmap(_create_hyp_class_and_strat)))))))))))))))))
/usr/lib/python3/dist-packages/hypothesis/strategies/_internal/strategies.py:841:
 in do_draw
    return data.draw(strategy)
           ^^^^^^^^^^^^^^^^^^^
        data       = ConjectureData(VALID, 8 choices, frozen)
        self       = one_of(LimitedStrategy(lists(one_of(any_typed_attrs(), 
int_typed_attrs(), str_typed_attrs(), float_typed_attrs(allow_n...(lst, 
key=lambda t: (t[0]._default is not NOTHING, 
t[0].kw_only))).flatmap(_create_hyp_class_and_strat)))))))))))))))))
        strategy   = nested_classes(tuples(lists(one_of(any_typed_attrs(), 
int_typed_attrs(), str_typed_attrs(), float_typed_attrs(allow_na...a lst: 
sorted(lst, key=lambda t: (t[0]._default is not NOTHING, 
t[0].kw_only))).flatmap(_create_hyp_class_and_strat))))
/usr/lib/python3/dist-packages/hypothesis/internal/conjecture/data.py:1212: in 
draw
    return unwrapped.do_draw(self)
           ^^^^^^^^^^^^^^^^^^^^^^^
        at_top_level = False
        label      = 12567006448872728824
        observability_enabled = <function observability_enabled at 
0x7fa768d8df80>
        observe_as = None
        self       = ConjectureData(VALID, 8 choices, frozen)
        start_time = None
        strategy   = nested_classes(tuples(lists(one_of(any_typed_attrs(), 
int_typed_attrs(), str_typed_attrs(), float_typed_attrs(allow_na...a lst: 
sorted(lst, key=lambda t: (t[0]._default is not NOTHING, 
t[0].kw_only))).flatmap(_create_hyp_class_and_strat))))
        to_jsonable = <function to_jsonable at 0x7fa768c5c400>
        unwrap_strategies = <function unwrap_strategies at 0x7fa768b0e3e0>
        unwrapped  = <hypothesis.strategies._internal.core.CompositeStrategy 
object at 0x7fa766f17750>
/usr/lib/python3/dist-packages/hypothesis/strategies/_internal/core.py:1886: in 
do_draw
    return self.definition(data.draw, *self.args, **self.kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        data       = ConjectureData(VALID, 8 choices, frozen)
        self       = <hypothesis.strategies._internal.core.CompositeStrategy 
object at 0x7fa766f17750>
tests/typed.py:911: in nested_classes
    list_of_class((attrs, (cls, init_vals, init_kwargs)), (pos_defs, 
kwarg_defs))
        attrs      = [(_CountingAttr(counter=28604, _default=NOTHING, 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, 
alias=None, metadata={}), none())]
        attrs_and_classes = 
TupleStrategy((ListStrategy(one_of(any_typed_attrs(), int_typed_attrs(), 
str_typed_attrs(), float_typed_attrs(allow_na...a lst: sorted(lst, key=lambda 
t: (t[0]._default is not NOTHING, 
t[0].kw_only))).flatmap(_create_hyp_class_and_strat))))
        class_and_strat = (<class 'tests.typed.HypClass'>, tuples(), 
fixed_dictionaries({}))
        cls        = <class 'tests.typed.HypClass'>
        draw       = <bound method ConjectureData.draw of ConjectureData(VALID, 
8 choices, frozen)>
        init_kwargs = {}
        init_vals  = ()
        kw_strat   = fixed_dictionaries({})
        kwarg_defs = {}
        pos_defs   = ()
        strat      = tuples()
tests/typed.py:824: in list_of_class
    return _create_hyp_class_and_strat(combined_attrs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        combined_attrs = [(_CountingAttr(counter=28604, _default=NOTHING, 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None..., 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, 
alias=None, metadata={}), just([HypClass()]))]
        default    = Factory(factory=<function list_of_class.<locals>.<lambda> 
at 0x7fa767520720>, takes_self=False)
        defaults   = ((), {})
        nested_cl  = <class 'tests.typed.HypClass'>
        nested_cl_args = ()
        nested_cl_kwargs = {}
        tup        = ([(_CountingAttr(counter=28604, _default=NOTHING, 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, 
alias=None, metadata={}), none())], (<class 'tests.typed.HypClass'>, (), {}))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

attrs_and_strategy = [(_CountingAttr(counter=28604, _default=NOTHING, 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None..., 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, 
alias=None, metadata={}), just([HypClass()]))]

    def _create_hyp_class_and_strat(
        attrs_and_strategy: list[tuple[_CountingAttr, SearchStrategy[PosArg]]],
    ) -> SearchStrategy[tuple[type, SearchStrategy[PosArgs], 
SearchStrategy[KwArgs]]]:
        def key(t):
            return (t[0].default is not NOTHING, t[0].kw_only)
    
>       attrs_and_strat = sorted(attrs_and_strategy, key=key)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: '<' not supported between instances of 'NoneType' and 'bool'
E       while generating 'cl_and_vals' from one_of(nested_ty 
[too-long-redacted] eate_dataclass, frozen=False)))

attrs_and_strategy = [(_CountingAttr(counter=28604, _default=NOTHING, 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None..., 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, 
alias=None, metadata={}), just([HypClass()]))]
key        = <function _create_hyp_class_and_strat.<locals>.key at 
0x7fa767970a40>

tests/typed.py:292: TypeError
________________________ test_attrs_asdict_unstructure _________________________

    @given(nested_classes())
>   def test_attrs_asdict_unstructure(nested_class):
                   ^^^

f          = <function given.<locals>.run_test_as_given.<locals>.wrapped_test 
at 0x7fa7685f4ae0>

tests/test_unstructure.py:73: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/untyped.py:210: in just_class
    return _create_hyp_class(combined_attrs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        combined_attrs = [(_CountingAttr(counter=35048, _default=None, 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, a...e), 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, 
alias=None, metadata={}), just(HypClass()))]
        default    = Factory(factory=<class 'tests.untyped.HypClass'>, 
takes_self=False)
        nested_cl  = <class 'tests.untyped.HypClass'>
        tup        = ([(_CountingAttr(counter=35048, _default=None, repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, 
metadata={}), none())], (<class 'tests.untyped.HypClass'>, (), {}))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

attrs_and_strategy = [(_CountingAttr(counter=35048, _default=None, repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, a...e), repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, 
metadata={}), just(HypClass()))]
frozen = None

    def _create_hyp_class(
        attrs_and_strategy: list[tuple[_CountingAttr, 
st.SearchStrategy[PosArgs]]],
        frozen=None,
    ) -> SearchStrategy[AttrsAndArgs]:
        """
        A helper function for Hypothesis to generate attrs classes.
    
        The result is a tuple: an attrs class, a tuple of values to
        instantiate it, and a kwargs dict for kw-only attributes.
        """
    
        def key(t):
            return (t[0].default is not NOTHING, t[0].kw_only)
    
>       attrs_and_strat = sorted(attrs_and_strategy, key=key)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: '<' not supported between instances of 'NoneType' and 'bool'
E       while generating 'nested_class' from 
recursive(lists(one_of(bare_attrs(defaults=True), int_attrs(defaults=True), 
str_attrs(defaults=True), float_attrs(defaults=True), 
dict_attrs(defaults=True), optional_attrs(defaults=True)), 
max_size=10).map(lambda lst: sorted(lst, key=lambda t: t[0]._default is not 
NOTHING)).flatmap(lambda attrs_and_strategy: 
_create_hyp_class(attrs_and_strategy, frozen=frozen)), 
_create_hyp_nested_strategy, max_leaves=100)

attrs_and_strategy = [(_CountingAttr(counter=35048, _default=None, repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, a...e), repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, 
metadata={}), just(HypClass()))]
frozen     = None
key        = <function _create_hyp_class.<locals>.key at 0x7fa766ca8540>

tests/untyped.py:182: TypeError
________________________ test_attrs_astuple_unstructure ________________________

    @given(nested_classes())
>   def test_attrs_astuple_unstructure(nested_class):
                   ^^^

f          = <function given.<locals>.run_test_as_given.<locals>.wrapped_test 
at 0x7fa7685f5bc0>

tests/test_unstructure.py:81: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
tests/untyped.py:210: in just_class
    return _create_hyp_class(combined_attrs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        combined_attrs = [(_CountingAttr(counter=35338, _default=None, 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, a...e), 
repr=True, eq=True, order=True, hash=None, init=True, on_setattr=None, 
alias=None, metadata={}), just(HypClass()))]
        default    = Factory(factory=<class 'tests.untyped.HypClass'>, 
takes_self=False)
        nested_cl  = <class 'tests.untyped.HypClass'>
        tup        = ([(_CountingAttr(counter=35338, _default=None, repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, 
metadata={}), none())], (<class 'tests.untyped.HypClass'>, (), {}))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

attrs_and_strategy = [(_CountingAttr(counter=35338, _default=None, repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, a...e), repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, 
metadata={}), just(HypClass()))]
frozen = None

    def _create_hyp_class(
        attrs_and_strategy: list[tuple[_CountingAttr, 
st.SearchStrategy[PosArgs]]],
        frozen=None,
    ) -> SearchStrategy[AttrsAndArgs]:
        """
        A helper function for Hypothesis to generate attrs classes.
    
        The result is a tuple: an attrs class, a tuple of values to
        instantiate it, and a kwargs dict for kw-only attributes.
        """
    
        def key(t):
            return (t[0].default is not NOTHING, t[0].kw_only)
    
>       attrs_and_strat = sorted(attrs_and_strategy, key=key)
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
E       TypeError: '<' not supported between instances of 'NoneType' and 'bool'
E       while generating 'nested_class' from 
recursive(lists(one_of(bare_attrs(defaults=True), int_attrs(defaults=True), 
str_attrs(defaults=True), float_attrs(defaults=True), 
dict_attrs(defaults=True), optional_attrs(defaults=True)), 
max_size=10).map(lambda lst: sorted(lst, key=lambda t: t[0]._default is not 
NOTHING)).flatmap(lambda attrs_and_strategy: 
_create_hyp_class(attrs_and_strategy, frozen=frozen)), 
_create_hyp_nested_strategy, max_leaves=100)

attrs_and_strategy = [(_CountingAttr(counter=35338, _default=None, repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, a...e), repr=True, 
eq=True, order=True, hash=None, init=True, on_setattr=None, alias=None, 
metadata={}), just(HypClass()))]
frozen     = None
key        = <function _create_hyp_class.<locals>.key at 0x7fa766c919e0>

tests/untyped.py:182: TypeError
=========================== short test summary info ============================
FAILED tests/test_baseconverter.py::test_nested_roundtrip - TypeError: '<' no...
FAILED tests/test_baseconverter.py::test_nested_roundtrip_tuple - TypeError: ...
FAILED tests/test_converter.py::test_nested_roundtrip - TypeError: '<' not su...
FAILED tests/test_converter.py::test_nested_roundtrip_tuple - TypeError: '<' ...
FAILED tests/test_gen_dict.py::test_unmodified_generated_unstructuring - Type...
FAILED tests/test_gen_dict.py::test_nodefs_generated_unstructuring - TypeErro...
FAILED tests/test_gen_dict.py::test_nodefs_generated_unstructuring_cl - TypeE...
FAILED tests/test_gen_dict.py::test_individual_overrides - TypeError: '<' not...
FAILED tests/test_gen_dict.py::test_unmodified_generated_structuring - TypeEr...
FAILED tests/test_unstructure.py::test_attrs_asdict_unstructure - TypeError: ...
FAILED tests/test_unstructure.py::test_attrs_astuple_unstructure - TypeError:...
======= 11 failed, 861 passed, 6 skipped, 15 xfailed in 96.70s (0:01:36) =======
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_cattr/build; python3.13 -m pytest -v 
--ignore tests/test_unstructure_collections.py --ignore tests/test_cols.py
dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.13 
returned exit code 13
make: *** [debian/rules:9: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

Reply via email to