Package: src:python-apischema
Version: 0.18.3-2
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/202512/

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

Thanks.

--------------------------------------------------------------------------------
[...]
 debian/rules clean
dh clean --buildsystem=pybuild
   debian/rules override_dh_auto_clean
make[1]: Entering directory '/<<PKGBUILDDIR>>'
dh_auto_clean
rm -rf apischema.egg-info/
make[1]: Leaving directory '/<<PKGBUILDDIR>>'
   dh_autoreconf_clean -O--buildsystem=pybuild
   dh_clean -O--buildsystem=pybuild
 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

[... snipped ...]

self = <Mock name='mock.typed_dict' id='140654801902224'>
args = (<class 'tests.unit.test_visitor.TypedDictExample'>, {'key1': <class 
'str'>, 'key2': typing.List[int]}, {'key1', 'key2'})
kwargs = {}
expected = call(<class 'tests.unit.test_visitor.TypedDictExample'>, {'key1': 
<class 'str'>, 'key2': typing.List[int]}, {'key1', 'key2'})
actual = call(<class 'tests.unit.test_visitor.TypedDictExample'>, {}, 
frozenset({'key1', 'key2'}))
_error_message = <function 
NonCallableMock.assert_called_with.<locals>._error_message at 0x7fecbf818eb0>
cause = None

    def assert_called_with(self, /, *args, **kwargs):
        """assert that the last call was made with the specified arguments.
    
        Raises an AssertionError if the args and keyword args passed in are
        different to the last call to the mock."""
        if self.call_args is None:
            expected = self._format_mock_call_signature(args, kwargs)
            actual = 'not called.'
            error_message = ('expected call not found.\nExpected: %s\n  Actual: 
%s'
                    % (expected, actual))
            raise AssertionError(error_message)
    
        def _error_message():
            msg = self._format_mock_failure_message(args, kwargs)
            return msg
        expected = self._call_matcher(_Call((args, kwargs), two=True))
        actual = self._call_matcher(self.call_args)
        if actual != expected:
            cause = expected if isinstance(expected, Exception) else None
>           raise AssertionError(_error_message()) from cause
E           AssertionError: expected call not found.
E           Expected: typed_dict(<class 
'tests.unit.test_visitor.TypedDictExample'>, {'key1': <class 'str'>, 'key2': 
typing.List[int]}, {'key1', 'key2'})
E             Actual: typed_dict(<class 
'tests.unit.test_visitor.TypedDictExample'>, {}, frozenset({'key1', 'key2'}))

/usr/lib/python3.14/unittest/mock.py:985: AssertionError
__________________________________ test_mock ___________________________________

    def test_mock():
        mock = cast(Data, ValidatorMock(Data, {"a": 0}))
        assert mock.a == 0
>       assert mock.b == "1"
               ^^^^^^

tests/unit/validation/test_mock.py:36: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
apischema/validation/mock.py:33: in __getattribute__
    fields = object_fields(cls, deserialization=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apischema/objects/getters.py:50: in object_fields
    return {f.name: f for f in GetFields().visit(tp)}
                               ^^^^^^^^^^^^^^^^^^^^^
apischema/visitor.py:167: in visit
    return self.dataclass(tp, *dataclass_types_and_fields(tp))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

tp = <class 'tests.unit.validation.test_mock.Data'>

    def dataclass_types_and_fields(
        tp: AnyType,
    ) -> Tuple[Mapping[str, AnyType], Sequence[Field], Sequence[Field]]:
        from apischema.metadata.keys import INIT_VAR_METADATA
    
        cls = get_origin_or_type(tp)
        assert is_dataclass(cls)
        types = resolve_type_hints(tp)
        fields, init_fields = [], []
        for field in getattr(cls, _FIELDS).values():
            assert isinstance(field, Field)
            if field._field_type == _FIELD_CLASSVAR:  # type: ignore
                continue
>           field_type = types[field.name]
                         ^^^^^^^^^^^^^^^^^
E           KeyError: 'a'

apischema/visitor.py:60: KeyError
_______________________________ test_non_trivial _______________________________

    def test_non_trivial():
        with pytest.raises(NonTrivialDependency) as err:
>           validate(ValidatorMock(Data, {"a": 42}), get_validators(Data))

tests/unit/validation/test_validator.py:70: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
apischema/validation/validators.py:128: in validate
    validator.validate(obj)
tests/unit/validation/test_validator.py:29: in non_trivial
    non_trivial(self)
tests/unit/validation/test_validator.py:33: in non_trivial
    return data.c == data.b
           ^^^^^^
apischema/validation/mock.py:33: in __getattribute__
    fields = object_fields(cls, deserialization=True)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
apischema/objects/getters.py:50: in object_fields
    return {f.name: f for f in GetFields().visit(tp)}
                               ^^^^^^^^^^^^^^^^^^^^^
apischema/visitor.py:167: in visit
    return self.dataclass(tp, *dataclass_types_and_fields(tp))
                               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

tp = <class 'tests.unit.validation.test_validator.Data'>

    def dataclass_types_and_fields(
        tp: AnyType,
    ) -> Tuple[Mapping[str, AnyType], Sequence[Field], Sequence[Field]]:
        from apischema.metadata.keys import INIT_VAR_METADATA
    
        cls = get_origin_or_type(tp)
        assert is_dataclass(cls)
        types = resolve_type_hints(tp)
        fields, init_fields = [], []
        for field in getattr(cls, _FIELDS).values():
            assert isinstance(field, Field)
            if field._field_type == _FIELD_CLASSVAR:  # type: ignore
                continue
>           field_type = types[field.name]
                         ^^^^^^^^^^^^^^^^^
E           KeyError: 'a'

apischema/visitor.py:60: KeyError
=========================== short test summary info ============================
FAILED tests/integration/test_annotated_schema.py::test_annotated_schema - Ke...
FAILED 
tests/integration/test_default_conversion_type_name.py::test_default_conversion_type_name
FAILED 
tests/integration/test_deserialization_pass_through.py::test_pass_through_doesnt_run_type_validators
FAILED tests/integration/test_dict.py::test_typed_dict - AssertionError: asse...
FAILED tests/integration/test_discriminator.py::test_typed_dict_discriminator
FAILED 
tests/integration/test_discriminator.py::test_discriminator_literal_field[a-obj0]
FAILED 
tests/integration/test_discriminator.py::test_discriminator_literal_field[B-obj1]
FAILED 
tests/integration/test_field_generic_conversion.py::test_field_generic_conversion
FAILED tests/integration/test_generic_conversion.py::test_generic_conversion
FAILED 
tests/integration/test_generic_conversion.py::test_unparameterized_generic_conversion
FAILED 
tests/integration/test_generic_conversion.py::test_annotated_generic_conversion
FAILED 
tests/integration/test_object_fields_overriding.py::test_object_fields_overriding
FAILED 
tests/integration/test_override_dataclass_constructors.py::test_override_dataclass_constructors[True]
FAILED 
tests/integration/test_override_dataclass_constructors.py::test_override_dataclass_constructors[False]
FAILED 
tests/integration/test_resolver_default_parameter_not_serializable.py::test_resolver_default_parameter_not_serializable[Union-default0]
FAILED 
tests/integration/test_resolver_default_parameter_not_serializable.py::test_resolver_default_parameter_not_serializable[Union-default1]
FAILED 
tests/integration/test_serialization_conflicting_union.py::test_correct_serialization
FAILED 
tests/integration/test_unsupported_union_member.py::test_unsupported_union_member
FAILED tests/integration/test_validator_aliasing.py::test_validator_aliasing
FAILED tests/unit/test_alias.py::test_alias - KeyError: 'not_aliased'
FAILED tests/unit/test_dataclasses.py::test_resolve_init_var - KeyError: 'a'
FAILED tests/unit/test_deserialization.py::test_flattened_aliases - KeyError:...
FAILED tests/unit/test_deserialization.py::test_invalid_flattened - KeyError:...
FAILED 
tests/unit/test_deserialization_serialization.py::test_optional[None-None]
FAILED 
tests/unit/test_deserialization_serialization.py::test_optional[data1-expected1]
FAILED tests/unit/test_deserialization_serialization.py::test_union[-] - KeyE...
FAILED 
tests/unit/test_deserialization_serialization.py::test_union[data1-expected1]
FAILED tests/unit/test_deserialization_serialization.py::test_union_error[0]
FAILED tests/unit/test_deserialization_serialization.py::test_union_error[None]
FAILED 
tests/unit/test_deserialization_serialization.py::test_collection[List-expected0]
FAILED 
tests/unit/test_deserialization_serialization.py::test_collection[Set-expected1]
FAILED 
tests/unit/test_deserialization_serialization.py::test_collection[Sequence-expected2]
FAILED 
tests/unit/test_deserialization_serialization.py::test_collection[AbstractSet-expected3]
FAILED 
tests/unit/test_deserialization_serialization.py::test_collection[FrozenSet-expected4]
FAILED tests/unit/test_deserialization_serialization.py::test_collection_tuple
FAILED 
tests/unit/test_deserialization_serialization.py::test_collection_tuple_variadic
FAILED 
tests/unit/test_deserialization_serialization.py::test_mapping[str-data0-expected0]
FAILED 
tests/unit/test_deserialization_serialization.py::test_mapping[UUID-data1-expected1]
FAILED 
tests/unit/test_deserialization_serialization.py::test_mapping[UUID-data2-expected2]
FAILED 
tests/unit/test_deserialization_serialization.py::test_dataclass[data0-expected0]
FAILED 
tests/unit/test_deserialization_serialization.py::test_dataclass[data1-expected1]
FAILED 
tests/unit/test_deserialization_serialization.py::test_dataclass[data2-expected2]
FAILED 
tests/unit/test_deserialization_serialization.py::test_dataclass_error[data0]
FAILED 
tests/unit/test_deserialization_serialization.py::test_dataclass_error[data1]
FAILED tests/unit/test_deserialization_serialization.py::test_properties - Ke...
FAILED tests/unit/test_flattened_conversion.py::test_flattened_dataclass_model
FAILED tests/unit/test_flattened_conversion.py::test_flattened_converted - Ke...
FAILED tests/unit/test_flattened_conversion.py::test_flattened_converted_error
FAILED tests/unit/test_metadata.py::test_flattened_generic_dataclass - KeyErr...
FAILED tests/unit/test_recursion.py::test_is_recursive[B-True] - KeyError: 'b'
FAILED tests/unit/test_recursion.py::test_is_recursive[C-True] - KeyError: 'b'
FAILED tests/unit/test_recursion.py::test_is_recursive[D-True] - KeyError: 'c'
FAILED tests/unit/test_recursion.py::test_is_recursive[E-True] - KeyError: 'c'
FAILED tests/unit/test_recursion.py::test_is_recursive[F-True] - KeyError: 'e'
FAILED tests/unit/test_recursion.py::test_is_recursive[G-True] - KeyError: 'a'
FAILED tests/unit/test_refs.py::test_find_refs - KeyError: 'bs'
FAILED tests/unit/test_refs.py::test_generic_schema - KeyError: 'a'
FAILED tests/unit/test_schema.py::test_recursive_by_conversion_schema - KeyEr...
FAILED tests/unit/test_schema.py::test_flattened_schema - KeyError: 'attr1'
FAILED 
tests/unit/test_subscriptions.py::test_subscription[None-error_handler0-None-None]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[None-error_handler0-None-alias]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[None-error_handler0-event_name-None]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[None-error_handler0-event_name-alias]
FAILED tests/unit/test_subscriptions.py::test_subscription[None-None-None-None]
FAILED tests/unit/test_subscriptions.py::test_subscription[None-None-None-alias]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[None-None-event_name-None]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[None-None-event_name-alias]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[events2-error_handler0-None-None]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[events2-error_handler0-None-alias]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[events2-error_handler0-event_name-None]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[events2-error_handler0-event_name-alias]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[events2-None-None-None]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[events2-None-None-alias]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[events2-None-event_name-None]
FAILED 
tests/unit/test_subscriptions.py::test_subscription[events2-None-event_name-alias]
FAILED tests/unit/test_typing.py::test_resolve_type_hints[A-_0-result0] - Ass...
FAILED tests/unit/test_typing.py::test_resolve_type_hints[A-_1-result1] - Ass...
FAILED tests/unit/test_typing.py::test_resolve_type_hints[A-_2-result2] - Ass...
FAILED tests/unit/test_typing.py::test_resolve_type_hints[B-_3-result3] - Ass...
FAILED tests/unit/test_typing.py::test_resolve_type_hints[B-_4-result4] - Ass...
FAILED tests/unit/test_typing.py::test_resolve_type_hints[B-_5-result5] - Ass...
FAILED tests/unit/test_typing.py::test_resolve_type_hints[C-_6-result6] - Ass...
FAILED tests/unit/test_typing.py::test_resolve_type_hints[D-_7-result7] - Ass...
FAILED 
tests/unit/test_visitor.py::test_visitor[DataclassExample-dataclass-args14]
FAILED 
tests/unit/test_visitor.py::test_visitor[NamedTupleExample-named_tuple-args17]
FAILED 
tests/unit/test_visitor.py::test_visitor[TypedDictExample-typed_dict-args23]
FAILED tests/unit/validation/test_mock.py::test_mock - KeyError: 'a'
FAILED tests/unit/validation/test_validator.py::test_non_trivial - KeyError: 'a'
================== 88 failed, 195 passed, 1 xfailed in 2.63s ===================
E: pybuild pybuild:389: test: plugin pyproject failed with: exit code=1: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.14_apischema/build; python3.14 -m pytest 
tests
I: pybuild base:317: cd 
/<<PKGBUILDDIR>>/.pybuild/cpython3_3.13_apischema/build; python3.13 -m pytest 
tests
============================= test session starts ==============================
platform linux -- Python 3.13.11, pytest-9.0.2, pluggy-1.6.0
rootdir: /<<PKGBUILDDIR>>
configfile: setup.cfg
plugins: asyncio-1.2.0, typeguard-4.4.4
asyncio: mode=Mode.AUTO, debug=False, asyncio_default_fixture_loop_scope=None, 
asyncio_default_test_loop_scope=function
collected 284 items

tests/integration/test_aliased_resolvers.py ...                          [  1%]
tests/integration/test_annotated_schema.py .                             [  1%]
tests/integration/test_collections_implies_tuple_passthrough.py ...      [  2%]
tests/integration/test_default_conversion_type_name.py .                 [  2%]
tests/integration/test_descriptor_converters.py .                        [  3%]
tests/integration/test_deserialization_pass_through.py ..                [  3%]
tests/integration/test_deserialize_with_coercion.py .                    [  4%]
tests/integration/test_deserializer_registration_reset_deserialization_cache.py 
. [  4%]
                                                                         [  4%]
tests/integration/test_dict.py ..x.....                                  [  7%]
tests/integration/test_discriminator.py ....                             [  8%]
tests/integration/test_field_generic_conversion.py .                     [  9%]
tests/integration/test_generic_conversion.py ...                         [ 10%]
tests/integration/test_generic_object_deserialization.py .               [ 10%]
tests/integration/test_int_as_float.py .                                 [ 10%]
tests/integration/test_new_type_conversion.py .                          [ 11%]
tests/integration/test_no_copy.py ...                                    [ 12%]
tests/integration/test_object_fields_overriding.py .                     [ 12%]
tests/integration/test_override_dataclass_constructors.py ..             [ 13%]
tests/integration/test_pattern_deserialization.py ..                     [ 14%]
tests/integration/test_resolver_default_parameter_not_serializable.py .. [ 14%]
                                                                         [ 14%]
tests/integration/test_serialization_conflicting_union.py .              [ 15%]
tests/integration/test_type_converter.py .                               [ 15%]
tests/integration/test_union_any_schema.py ....                          [ 16%]
tests/integration/test_unsupported_union_member.py .                     [ 17%]
tests/integration/test_validator_aliasing.py .                           [ 17%]
tests/unit/test_alias.py .                                               [ 17%]
tests/unit/test_coercion.py ........                                     [ 20%]
tests/unit/test_constraints.py .                                         [ 21%]
tests/unit/test_conversions_resolver.py .............                    [ 25%]
tests/unit/test_dataclasses.py ..                                        [ 26%]
tests/unit/test_deserialization.py ..                                    [ 27%]
tests/unit/test_deserialization_methods.py .                             [ 27%]
tests/unit/test_deserialization_serialization.py ....................... [ 35%]
........................                                                 [ 44%]
tests/unit/test_field.py .                                               [ 44%]
tests/unit/test_flattened_conversion.py ...                              [ 45%]
tests/unit/test_metadata.py .                                            [ 45%]
tests/unit/test_recursion.py .......                                     [ 48%]
tests/unit/test_refs.py ......                                           [ 50%]
tests/unit/test_schema.py ..                                             [ 51%]
tests/unit/test_serialized.py ..                                         [ 51%]
tests/unit/test_subscriptions.py ................                        [ 57%]
tests/unit/test_subtyping_substitution.py ........                       [ 60%]
tests/unit/test_types.py ..                                              [ 60%]
tests/unit/test_typing.py ................                               [ 66%]
tests/unit/test_utils.py ............................................... [ 83%]
............                                                             [ 87%]
tests/unit/test_visitor.py ...........................                   [ 96%]
tests/unit/validation/test_dependencies.py ....                          [ 98%]
tests/unit/validation/test_mock.py .                                     [ 98%]
tests/unit/validation/test_validator.py ....                             [100%]

======================== 283 passed, 1 xfailed in 0.43s ========================
dh_auto_test: error: pybuild --test -i python{version} -p "3.14 3.13" returned 
exit code 13
make: *** [debian/rules:7: binary] Error 25
dpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2
--------------------------------------------------------------------------------

Reply via email to