Source: python-cattrs Version: 1.10.0-1 Severity: serious Justification: FTBFS Tags: bookworm sid ftbfs User: [email protected] Usertags: ftbfs-20221023 ftbfs-bookworm
Hi, During a rebuild of all packages in sid, your package failed to build on amd64. Relevant part (hopefully): > make[1]: Entering directory '/<<PKGBUILDDIR>>' > cd docs && \ > PYTHONPATH=/<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_cattr/build > http_proxy='http://127.0.0.1:9/' https_proxy='https://127.0.0.1:9/' \ > sphinx-build -N -E -T -b html . /<<PKGBUILDDIR>>/.pybuild/docs/html/ > Running Sphinx v4.5.0 > making output directory... done > WARNING: html_static_path entry '_static' does not exist > building [mo]: targets for 0 po files that are out of date > building [html]: targets for 16 source files that are out of date > updating environment: [new config] 16 added, 0 changed, 0 removed > reading sources... [ 6%] benchmarking > reading sources... [ 12%] cattr > reading sources... [ 18%] cattr.preconf > reading sources... [ 25%] contributing > reading sources... [ 31%] converters > reading sources... [ 37%] customizing > reading sources... [ 43%] history > reading sources... [ 50%] index > reading sources... [ 56%] installation > reading sources... [ 62%] modules > reading sources... [ 68%] preconf > reading sources... [ 75%] readme > reading sources... [ 81%] structuring > reading sources... [ 87%] unions > reading sources... [ 93%] unstructuring > reading sources... [100%] usage > > /<<PKGBUILDDIR>>/docs/cattr.preconf.rst:5: WARNING: duplicate label > submodules, other instance in /<<PKGBUILDDIR>>/docs/cattr.rst > /<<PKGBUILDDIR>>/docs/cattr.preconf.rst:64: WARNING: duplicate label module > contents, other instance in /<<PKGBUILDDIR>>/docs/cattr.rst > /<<PKGBUILDDIR>>/docs/unstructuring.rst:94: WARNING: duplicate label > ``typing.annotated``, other instance in /<<PKGBUILDDIR>>/docs/structuring.rst > /<<PKGBUILDDIR>>/docs/unstructuring.rst:100: WARNING: duplicate label > ``attrs`` classes and dataclasses, other instance in > /<<PKGBUILDDIR>>/docs/structuring.rst > looking for now-outdated files... none found > pickling environment... done > checking consistency... /<<PKGBUILDDIR>>/docs/modules.rst: WARNING: document > isn't included in any toctree > done > preparing documents... done > writing output... [ 6%] benchmarking > writing output... [ 12%] cattr > writing output... [ 18%] cattr.preconf > writing output... [ 25%] contributing > writing output... [ 31%] converters > writing output... [ 37%] customizing > writing output... [ 43%] history > writing output... [ 50%] index > writing output... [ 56%] installation > writing output... [ 62%] modules > writing output... [ 68%] preconf > writing output... [ 75%] readme > writing output... [ 81%] structuring > writing output... [ 87%] unions > writing output... [ 93%] unstructuring > writing output... [100%] usage > > /<<PKGBUILDDIR>>/src/cattr/gen.py:docstring of > cattr.gen.make_dict_structure_fn:: WARNING: more than one target found for > cross-reference 'Converter': cattr.converters.Converter, cattr.Converter > /<<PKGBUILDDIR>>/docs/unstructuring.rst:14: WARNING: more than one target > found for cross-reference 'Converter.unstructure': > cattr.converters.Converter.unstructure, cattr.Converter.unstructure > /<<PKGBUILDDIR>>/docs/unstructuring.rst:102: WARNING: more than one target > found for cross-reference 'Converter': cattr.converters.Converter, > cattr.Converter > /<<PKGBUILDDIR>>/docs/unstructuring.rst:125: WARNING: more than one target > found for cross-reference 'Converter.unstructure_attrs_asdict': > cattr.converters.Converter.unstructure_attrs_asdict, > cattr.Converter.unstructure_attrs_asdict > /<<PKGBUILDDIR>>/docs/unstructuring.rst:125: WARNING: more than one target > found for cross-reference 'Converter.unstructure_attrs_astuple': > cattr.converters.Converter.unstructure_attrs_astuple, > cattr.Converter.unstructure_attrs_astuple > /<<PKGBUILDDIR>>/docs/usage.rst:29: WARNING: more than one target found for > cross-reference 'Converter': cattr.converters.Converter, cattr.Converter > generating indices... genindex py-modindex done > highlighting module code... [ 7%] cattr.converters > highlighting module code... [ 15%] cattr.disambiguators > highlighting module code... [ 23%] cattr.dispatch > highlighting module code... [ 30%] cattr.errors > highlighting module code... [ 38%] cattr.gen > highlighting module code... [ 46%] cattr.preconf > highlighting module code... [ 53%] cattr.preconf.bson > highlighting module code... [ 61%] cattr.preconf.json > highlighting module code... [ 69%] cattr.preconf.msgpack > highlighting module code... [ 76%] cattr.preconf.orjson > highlighting module code... [ 84%] cattr.preconf.pyyaml > highlighting module code... [ 92%] cattr.preconf.tomlkit > highlighting module code... [100%] cattr.preconf.ujson > > writing additional pages... search done > copying static files... done > copying extra files... done > dumping search index in English (code: en)... done > dumping object inventory... done > build succeeded, 12 warnings. > > The HTML pages are in ../.pybuild/docs/html. > rm -rf /<<PKGBUILDDIR>>/.pybuild/docs/html/.doctrees > make[1]: Leaving directory '/<<PKGBUILDDIR>>' > dh_auto_test -O--buildsystem=pybuild > I: pybuild base:240: cd /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_cattr/build; > python3.10 -m pytest -v --ignore tests/test_unstructure_collections.py -k > 'not test_orjson' > ============================= test session starts > ============================== > platform linux -- Python 3.10.7, pytest-7.1.2, pluggy-1.0.0+repack -- > /usr/bin/python3.10 > cachedir: .pytest_cache > hypothesis profile 'tests' -> deadline=None, > suppress_health_check=[HealthCheck.too_slow], > database=DirectoryBasedExampleDatabase('/<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_cattr/build/.hypothesis/examples') > benchmark: 3.2.2 (defaults: timer=time.perf_counter disable_gc=False > min_rounds=5 min_time=0.000005 max_time=1.0 calibration_precision=10 > warmup=True warmup_iterations=5) > rootdir: /<<PKGBUILDDIR>>, configfile: pyproject.toml > plugins: hypothesis-6.36.0, benchmark-3.2.2 > collecting ... collected 141 items / 1 deselected / 140 selected > > tests/test_converter_inheritance.py::test_inheritance[GenConverter] PASSED [ > 0%] > tests/test_converter_inheritance.py::test_inheritance[Converter] PASSED [ > 1%] > tests/test_converter_inheritance.py::test_gen_hook_priority[Converter] PASSED > [ 2%] > tests/test_converter_inheritance.py::test_gen_hook_priority[GenConverter] > PASSED [ 2%] > tests/test_dataclasses.py::test_dataclasses_in_attrs[GenConverter] PASSED [ > 3%] > tests/test_dataclasses.py::test_dataclasses_in_attrs[Converter] PASSED [ > 4%] > tests/test_dataclasses.py::test_dataclasses_in_container[GenConverter] PASSED > [ 5%] > tests/test_dataclasses.py::test_dataclasses_in_container[Converter] PASSED [ > 5%] > tests/test_dataclasses.py::test_dataclasses[GenConverter] PASSED [ > 6%] > tests/test_dataclasses.py::test_dataclasses[Converter] PASSED [ > 7%] > tests/test_disambigutors.py::test_edge_errors PASSED [ > 7%] > tests/test_disambigutors.py::test_fallback PASSED [ > 8%] > tests/test_disambigutors.py::test_disambiguation PASSED [ > 9%] > tests/test_factory_hooks.py::test_snake_to_camel[Converter] PASSED [ > 10%] > tests/test_factory_hooks.py::test_snake_to_camel[GenConverter] PASSED [ > 10%] > tests/test_function_dispatch.py::test_function_dispatch PASSED [ > 11%] > tests/test_function_dispatch.py::test_function_clears_cache_after_function_added > PASSED [ 12%] > tests/test_gen.py::test_structure_linecache PASSED [ > 12%] > tests/test_gen.py::test_unstructure_linecache PASSED [ > 13%] > tests/test_gen.py::test_no_linecache PASSED [ > 14%] > tests/test_gen_dict.py::test_unmodified_generated_unstructuring PASSED [ > 15%] > tests/test_gen_dict.py::test_nodefs_generated_unstructuring PASSED [ > 15%] > tests/test_gen_dict.py::test_nodefs_generated_unstructuring_cl PASSED [ > 16%] > tests/test_gen_dict.py::test_individual_overrides PASSED [ > 17%] > tests/test_gen_dict.py::test_unmodified_generated_structuring PASSED [ > 17%] > tests/test_gen_dict.py::test_renaming PASSED [ > 18%] > tests/test_gen_dict.py::test_renaming_forbid_extra_keys PASSED [ > 19%] > tests/test_gen_dict.py::test_omitting PASSED [ > 20%] > tests/test_gen_dict.py::test_omitting_structure PASSED [ > 20%] > tests/test_gen_dict_563.py::test_roundtrip PASSED [ > 21%] > tests/test_gen_dict_563.py::test_roundtrip_dc PASSED [ > 22%] > tests/test_generics.py::test_deep_copy PASSED [ > 22%] > tests/test_generics.py::test_able_to_structure_generics[int-str-result0] > PASSED [ 23%] > tests/test_generics.py::test_able_to_structure_generics[str-str-result1] > PASSED [ 24%] > tests/test_generics.py::test_able_to_structure_generics[List-str-result2] > PASSED [ 25%] > tests/test_generics.py::test_structure_generics_with_cols[int-result0] PASSED > [ 25%] > tests/test_generics.py::test_structure_generics_with_cols[str-result1] PASSED > [ 26%] > tests/test_generics.py::test_39_structure_generics_with_cols[int-result0] > PASSED [ 27%] > tests/test_generics.py::test_39_structure_generics_with_cols[str-result1] > PASSED [ 27%] > tests/test_generics.py::test_structure_nested_generics_with_cols[int-result0] > PASSED [ 28%] > tests/test_generics.py::test_structure_nested_generics_with_cols[int-result1] > PASSED [ 29%] > tests/test_generics.py::test_structure_nested_generics[TClass-str-result0] > PASSED [ 30%] > tests/test_generics.py::test_structure_nested_generics[List-str-result1] > PASSED [ 30%] > tests/test_generics.py::test_able_to_structure_deeply_nested_generics_gen > PASSED [ 31%] > tests/test_generics.py::test_structure_unions_of_generics PASSED [ > 32%] > tests/test_generics.py::test_structure_list_of_generic_unions PASSED [ > 32%] > tests/test_generics.py::test_raises_if_no_generic_params_supplied PASSED [ > 33%] > tests/test_generics.py::test_unstructure_generic_attrs PASSED [ > 34%] > tests/test_generics.py::test_unstructure_deeply_nested_generics PASSED [ > 35%] > tests/test_generics.py::test_unstructure_deeply_nested_generics_list PASSED [ > 35%] > tests/test_generics.py::test_unstructure_protocol PASSED [ > 36%] > tests/test_multistrategy_dispatch.py::test_multistrategy_dispatch_register_cls > PASSED [ 37%] > tests/test_multistrategy_dispatch.py::test_multistrategy_dispatch_register_func > PASSED [ 37%] > tests/test_multistrategy_dispatch.py::test_multistrategy_dispatch_conflict_class_wins > PASSED [ 38%] > tests/test_preconf.py::test_stdlib_json PASSED [ > 39%] > tests/test_preconf.py::test_ujson PASSED [ > 40%] > tests/test_preconf.py::test_msgpack PASSED [ > 40%] > tests/test_preconf.py::test_bson PASSED [ > 41%] > tests/test_preconf.py::test_pyyaml PASSED [ > 42%] > tests/test_preconf.py::test_tomlkit FAILED [ > 42%] > tests/test_recursive.py::test_simple_recursive PASSED [ > 43%] > tests/test_structure.py::test_structuring_primitives PASSED [ > 44%] > tests/test_structure.py::test_structuring_seqs PASSED [ > 45%] > tests/test_structure.py::test_structuring_sets PASSED [ > 45%] > tests/test_structure.py::test_stringifying_sets PASSED [ > 46%] > tests/test_structure.py::test_structuring_hetero_tuples PASSED [ > 47%] > tests/test_structure.py::test_stringifying_tuples PASSED [ > 47%] > tests/test_structure.py::test_structuring_dicts PASSED [ > 48%] > tests/test_structure.py::test_structuring_dicts_opts PASSED [ > 49%] > tests/test_structure.py::test_stringifying_dicts PASSED [ > 50%] > tests/test_structure.py::test_structuring_optional_primitives PASSED [ > 50%] > tests/test_structure.py::test_structuring_lists_of_opt PASSED [ > 51%] > tests/test_structure.py::test_stringifying_lists_of_opt PASSED [ > 52%] > tests/test_structure.py::test_structuring_primitive_union_hook PASSED [ > 52%] > tests/test_structure.py::test_structure_hook_func PASSED [ > 53%] > tests/test_structure.py::test_structuring_enums PASSED [ > 54%] > tests/test_structure.py::test_structuring_unsupported PASSED [ > 55%] > tests/test_structure.py::test_subclass_registration_is_honored PASSED [ > 55%] > tests/test_structure.py::test_structure_union_edge_case PASSED [ > 56%] > tests/test_structure_attrs.py::test_structure_simple_from_dict PASSED [ > 57%] > tests/test_structure_attrs.py::test_structure_simple_from_dict_default PASSED > [ 57%] > tests/test_structure_attrs.py::test_roundtrip PASSED [ > 58%] > tests/test_structure_attrs.py::test_structure_tuple PASSED [ > 59%] > tests/test_structure_attrs.py::test_structure_union PASSED [ > 60%] > tests/test_structure_attrs.py::test_structure_union_none PASSED [ > 60%] > tests/test_structure_attrs.py::test_structure_union_explicit PASSED [ > 61%] > tests/test_structure_attrs.py::test_structure_literal[Converter] PASSED [ > 62%] > tests/test_structure_attrs.py::test_structure_literal[GenConverter] PASSED [ > 62%] > tests/test_structure_attrs.py::test_structure_literal_multiple[Converter] > PASSED [ 63%] > tests/test_structure_attrs.py::test_structure_literal_multiple[GenConverter] > PASSED [ 64%] > tests/test_structure_attrs.py::test_structure_literal_error[Converter] PASSED > [ 65%] > tests/test_structure_attrs.py::test_structure_literal_error[GenConverter] > PASSED [ 65%] > tests/test_structure_attrs.py::test_structure_literal_multiple_error[Converter] > PASSED [ 66%] > tests/test_structure_attrs.py::test_structure_literal_multiple_error[GenConverter] > PASSED [ 67%] > tests/test_structure_attrs.py::test_structure_fallback_to_attrib_converters[Converter] > PASSED [ 67%] > tests/test_structure_attrs.py::test_structure_fallback_to_attrib_converters[GenConverter] > PASSED [ 68%] > tests/test_structure_attrs.py::test_structure_prefers_attrib_converters[Converter] > PASSED [ 69%] > tests/test_structure_attrs.py::test_structure_prefers_attrib_converters[GenConverter] > PASSED [ 70%] > tests/test_unions.py::test_custom_union_toplevel_roundtrip[Converter] PASSED > [ 70%] > tests/test_unions.py::test_custom_union_toplevel_roundtrip[GenConverter] > PASSED [ 71%] > tests/test_unions.py::test_310_custom_union_toplevel_roundtrip[Converter] > PASSED [ 72%] > tests/test_unions.py::test_310_custom_union_toplevel_roundtrip[GenConverter] > PASSED [ 72%] > tests/test_unions.py::test_custom_union_clsfield_roundtrip[Converter] PASSED > [ 73%] > tests/test_unions.py::test_custom_union_clsfield_roundtrip[GenConverter] > PASSED [ 74%] > tests/test_unstructure.py::test_seq_unstructure PASSED [ > 75%] > tests/test_unstructure.py::test_set_unstructure PASSED [ > 75%] > tests/test_unstructure.py::test_mapping_unstructure PASSED [ > 76%] > tests/test_unstructure.py::test_enum_unstructure PASSED [ > 77%] > tests/test_unstructure.py::test_attrs_asdict_unstructure PASSED [ > 77%] > tests/test_unstructure.py::test_attrs_astuple_unstructure PASSED [ > 78%] > tests/test_unstructure.py::test_unstructure_hooks PASSED [ > 79%] > tests/test_unstructure.py::test_unstructure_hook_func PASSED [ > 80%] > tests/test_unstructure.py::test_seq_of_simple_classes_unstructure PASSED [ > 80%] > tests/metadata/test_genconverter.py::test_simple_roundtrip PASSED [ > 81%] > tests/metadata/test_genconverter.py::test_simple_roundtrip_defaults PASSED [ > 82%] > tests/metadata/test_genconverter.py::test_simple_roundtrip_with_extra_keys_forbidden > PASSED [ 82%] > tests/metadata/test_genconverter.py::test_forbid_extra_keys PASSED [ > 83%] > tests/metadata/test_genconverter.py::test_forbid_extra_keys_defaults PASSED [ > 84%] > tests/metadata/test_genconverter.py::test_forbid_extra_keys_nested_override > PASSED [ 85%] > tests/metadata/test_genconverter.py::test_nested_roundtrip PASSED [ > 85%] > tests/metadata/test_genconverter.py::test_union_field_roundtrip PASSED [ > 86%] > tests/metadata/test_genconverter.py::test_310_union_field_roundtrip PASSED [ > 87%] > tests/metadata/test_genconverter.py::test_optional_field_roundtrip PASSED [ > 87%] > tests/metadata/test_genconverter.py::test_310_optional_field_roundtrip PASSED > [ 88%] > tests/metadata/test_genconverter.py::test_omit_default_roundtrip PASSED [ > 89%] > tests/metadata/test_genconverter.py::test_type_overrides PASSED [ > 90%] > tests/metadata/test_genconverter.py::test_calling_back PASSED [ > 90%] > tests/metadata/test_genconverter.py::test_overriding_generated_unstructure > PASSED [ 91%] > tests/metadata/test_genconverter.py::test_overriding_generated_unstructure_hook_func > PASSED [ 92%] > tests/metadata/test_genconverter.py::test_overriding_generated_structure > PASSED [ 92%] > tests/metadata/test_genconverter.py::test_overriding_generated_structure_hook_func > PASSED [ 93%] > tests/metadata/test_genconverter.py::test_seq_of_simple_classes_unstructure > PASSED [ 94%] > tests/metadata/test_genconverter.py::test_annotated_attrs PASSED [ > 95%] > tests/metadata/test_roundtrips.py::test_simple_roundtrip PASSED [ > 95%] > tests/metadata/test_roundtrips.py::test_simple_roundtrip_defaults PASSED [ > 96%] > tests/metadata/test_roundtrips.py::test_nested_roundtrip PASSED [ > 97%] > tests/metadata/test_roundtrips.py::test_union_field_roundtrip PASSED [ > 97%] > tests/metadata/test_roundtrips.py::test_310_union_field_roundtrip PASSED [ > 98%] > tests/metadata/test_roundtrips.py::test_optional_field_roundtrip PASSED [ > 99%] > tests/metadata/test_roundtrips.py::test_310_optional_field_roundtrip PASSED > [100%] > > =================================== FAILURES > =================================== > _________________________________ test_tomlkit > _________________________________ > > @given( > > everythings( > min_key_length=1, > allow_null_bytes_in_keys=False, > allow_quotes_in_keys=False, > allow_control_characters_in_values=False, > ) > ) > E hypothesis.errors.MultipleFailures: Hypothesis found 3 distinct failures. > > f = <function given.<locals>.run_test_as_given.<locals>.wrapped_test > at 0x7f01ad9f5f30> > > tests/test_preconf.py:270: MultipleFailures > ---------------------------------- Hypothesis > ---------------------------------- > Falsifying example: test_tomlkit( > everything=Everything(string='', bytes=b'', an_int=0, a_float=0.0, > a_dict={}, a_list=[], a_homogenous_tuple=(), a_hetero_tuple=('', 0, 0.0), > a_counter=Counter({'\\U': 0}), a_mapping={}, a_mutable_mapping={}, > a_sequence=[], a_mutable_sequence=[], a_set=set(), a_mutable_set=set(), > a_frozenset=frozenset(), an_int_enum=<AnIntEnum.A: 1>, > a_str_enum=<AStringEnum.A: 'a'>, a_datetime=datetime.datetime(2000, 1, 1, 0, > 0, tzinfo=datetime.timezone.utc), a_string_enum_dict={}), > ) > everything = Everything(string='', bytes=b'', an_int=0, a_float=0.0, > a_dict={}, a_list=[], a_homogenous_tuple=(), a_hetero_tuple=('...tringEnum.A: > 'a'>, a_datetime=datetime.datetime(2000, 1, 1, 0, 0, > tzinfo=datetime.timezone.utc), a_string_enum_dict={}) > > @given( > everythings( > min_key_length=1, > allow_null_bytes_in_keys=False, > allow_quotes_in_keys=False, > allow_control_characters_in_values=False, > ) > ) > def test_tomlkit(everything: Everything): > from tomlkit import dumps as tomlkit_dumps > from tomlkit import loads as tomlkit_loads > > converter = tomlkit_make_converter() > unstructured = converter.unstructure(everything) > raw = tomlkit_dumps(unstructured) > > assert converter.structure(tomlkit_loads(raw), Everything) == > > everything > > converter = <cattr.converters.GenConverter object at 0x7f01a972f640> > everything = Everything(string='', bytes=b'', an_int=0, a_float=0.0, > a_dict={}, a_list=[], a_homogenous_tuple=(), a_hetero_tuple=('...tringEnum.A: > 'a'>, a_datetime=datetime.datetime(2000, 1, 1, 0, 0, > tzinfo=datetime.timezone.utc), a_string_enum_dict={}) > raw = 'string = ""\nbytes = ""\nan_int = 0\na_float = 0.0\na_list = > []\na_homogenous_tuple = []\na_hetero_tuple = ["", 0, > 0....-01-01T00:00:00Z\n\n[a_dict]\n\n[a_counter]\n"\\U" = > 0\n\n[a_mapping]\n\n[a_mutable_mapping]\n\n[a_string_enum_dict]\n' > tomlkit_dumps = <function dumps at 0x7f01abd85f30> > tomlkit_loads = <function loads at 0x7f01acb552d0> > unstructured = {'a_counter': {'\\U': 0}, 'a_datetime': > datetime.datetime(2000, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), 'a_dict': > {}, 'a_float': 0.0, ...} > > tests/test_preconf.py:284: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/tomlkit/api.py:42: in loads > return parse(string) > string = 'string = ""\nbytes = ""\nan_int = 0\na_float = > 0.0\na_list = []\na_homogenous_tuple = []\na_hetero_tuple = ["", 0, > 0....-01-01T00:00:00Z\n\n[a_dict]\n\n[a_counter]\n"\\U" = > 0\n\n[a_mapping]\n\n[a_mutable_mapping]\n\n[a_string_enum_dict]\n' > /usr/lib/python3/dist-packages/tomlkit/api.py:82: in parse > return Parser(string).parse() > string = 'string = ""\nbytes = ""\nan_int = 0\na_float = > 0.0\na_list = []\na_homogenous_tuple = []\na_hetero_tuple = ["", 0, > 0....-01-01T00:00:00Z\n\n[a_dict]\n\n[a_counter]\n"\\U" = > 0\n\n[a_mapping]\n\n[a_mutable_mapping]\n\n[a_string_enum_dict]\n' > /usr/lib/python3/dist-packages/tomlkit/parser.py:158: in parse > key, value = self._parse_table() > body = {'string': '', 'bytes': '', 'an_int': 0, 'a_float': 0.0, > 'a_list': [], 'a_homogenous_tuple': [], 'a_hetero_tuple': [''...': 'a', > 'a_datetime': DateTime(2000, 1, 1, 0, 0, > tzinfo=datetime.timezone(datetime.timedelta(0), 'UTC')), 'a_dict': {}} > item = (None, <Whitespace '\n'>) > key = <Key a_dict> > self = <tomlkit.parser.Parser object at 0x7f01acefa290> > value = {} > /usr/lib/python3/dist-packages/tomlkit/parser.py:998: in _parse_table > item = self._parse_item() > comment = '' > cws = '' > full_key = <Key a_counter> > indent = '' > is_aot = False > key = <Key a_counter> > missing_table = False > name_parts = (<Key a_counter>,) > parent = None > parent_name = None > parent_name_parts = () > result = <tomlkit.items.Null object at 0x7f01a9768640> > self = <tomlkit.parser.Parser object at 0x7f01acefa290> > table = {} > trail = '\n' > values = {} > /usr/lib/python3/dist-packages/tomlkit/parser.py:242: in _parse_item > return self._parse_key_value(True) > c = '"' > self = <tomlkit.parser.Parser object at 0x7f01acefa290> > state = <tomlkit.source._State object at 0x7f01a9769720> > /usr/lib/python3/dist-packages/tomlkit/parser.py:315: in _parse_key_value > key = self._parse_key() > indent = '' > parse_comment = True > self = <tomlkit.parser.Parser object at 0x7f01acefa290> > /usr/lib/python3/dist-packages/tomlkit/parser.py:362: in _parse_key > return self._parse_quoted_key() > self = <tomlkit.parser.Parser object at 0x7f01acefa290> > /usr/lib/python3/dist-packages/tomlkit/parser.py:378: in _parse_quoted_key > key_str = self._parse_string( > key_type = <KeyType.Basic: '"'> > original = '' > quote_style = '"' > self = <tomlkit.parser.Parser object at 0x7f01acefa290> > /usr/lib/python3/dist-packages/tomlkit/parser.py:864: in _parse_string > value += self._parse_escaped_char(delim.is_multiline()) > code = 85 > delim = <StringType.SLB: '"'> > escaped = True > self = <tomlkit.parser.Parser object at 0x7f01acefa290> > value = '' > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <tomlkit.parser.Parser object at 0x7f01acefa290>, multiline = False > > def _parse_escaped_char(self, multiline): > if multiline and self._current.is_ws(): > # When the last non-whitespace character on a line is > # a \, it will be trimmed along with all whitespace > # (including newlines) up to the next non-whitespace > # character or closing delimiter. > # """\ > # hello \ > # world""" > tmp = "" > while self._current.is_ws(): > tmp += self._current > # consume the whitespace, EOF here is an issue > # (middle of string) > self.inc(exception=UnexpectedEofError) > continue > > # the escape followed by whitespace must have a newline > # before any other chars > if "\n" not in tmp: > raise self.parse_error(InvalidCharInStringError, > self._current) > > return "" > > if self._current in _escaped: > c = _escaped[self._current] > > # consume this char, EOF here is an issue (middle of string) > self.inc(exception=UnexpectedEofError) > > return c > > if self._current in {"u", "U"}: > # this needs to be a unicode > u, ue = self._peek_unicode(self._current == "U") > if u is not None: > # consume the U char and the unicode value > self.inc_n(len(ue) + 1) > > return u > > > raise self.parse_error(InvalidUnicodeValueError) > E tomlkit.exceptions.InvalidUnicodeValueError: Invalid unicode > value at line 20 col 2 > > multiline = False > self = <tomlkit.parser.Parser object at 0x7f01acefa290> > u = None > ue = '" = 0\n\n[' > > /usr/lib/python3/dist-packages/tomlkit/parser.py:773: InvalidUnicodeValueError > > Falsifying example: test_tomlkit( > everything=Everything(string='', bytes=b'', an_int=0, a_float=0.0, > a_dict={}, a_list=[], a_homogenous_tuple=(), a_hetero_tuple=('', 0, 0.0), > a_counter=Counter({'\\0': 0}), a_mapping={}, a_mutable_mapping={}, > a_sequence=[], a_mutable_sequence=[], a_set=set(), a_mutable_set=set(), > a_frozenset=frozenset(), an_int_enum=<AnIntEnum.A: 1>, > a_str_enum=<AStringEnum.A: 'a'>, a_datetime=datetime.datetime(2000, 1, 1, 0, > 0, tzinfo=datetime.timezone.utc), a_string_enum_dict={}), > ) > everything = Everything(string='', bytes=b'', an_int=0, a_float=0.0, > a_dict={}, a_list=[], a_homogenous_tuple=(), a_hetero_tuple=('...tringEnum.A: > 'a'>, a_datetime=datetime.datetime(2000, 1, 1, 0, 0, > tzinfo=datetime.timezone.utc), a_string_enum_dict={}) > > @given( > everythings( > min_key_length=1, > allow_null_bytes_in_keys=False, > allow_quotes_in_keys=False, > allow_control_characters_in_values=False, > ) > ) > def test_tomlkit(everything: Everything): > from tomlkit import dumps as tomlkit_dumps > from tomlkit import loads as tomlkit_loads > > converter = tomlkit_make_converter() > unstructured = converter.unstructure(everything) > raw = tomlkit_dumps(unstructured) > > assert converter.structure(tomlkit_loads(raw), Everything) == > > everything > > converter = <cattr.converters.GenConverter object at 0x7f01a972f4c0> > everything = Everything(string='', bytes=b'', an_int=0, a_float=0.0, > a_dict={}, a_list=[], a_homogenous_tuple=(), a_hetero_tuple=('...tringEnum.A: > 'a'>, a_datetime=datetime.datetime(2000, 1, 1, 0, 0, > tzinfo=datetime.timezone.utc), a_string_enum_dict={}) > raw = 'string = ""\nbytes = ""\nan_int = 0\na_float = 0.0\na_list = > []\na_homogenous_tuple = []\na_hetero_tuple = ["", 0, > 0....-01-01T00:00:00Z\n\n[a_dict]\n\n[a_counter]\n"\\0" = > 0\n\n[a_mapping]\n\n[a_mutable_mapping]\n\n[a_string_enum_dict]\n' > tomlkit_dumps = <function dumps at 0x7f01abd85f30> > tomlkit_loads = <function loads at 0x7f01acb552d0> > unstructured = {'a_counter': {'\\0': 0}, 'a_datetime': > datetime.datetime(2000, 1, 1, 0, 0, tzinfo=datetime.timezone.utc), 'a_dict': > {}, 'a_float': 0.0, ...} > > tests/test_preconf.py:284: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/tomlkit/api.py:42: in loads > return parse(string) > string = 'string = ""\nbytes = ""\nan_int = 0\na_float = > 0.0\na_list = []\na_homogenous_tuple = []\na_hetero_tuple = ["", 0, > 0....-01-01T00:00:00Z\n\n[a_dict]\n\n[a_counter]\n"\\0" = > 0\n\n[a_mapping]\n\n[a_mutable_mapping]\n\n[a_string_enum_dict]\n' > /usr/lib/python3/dist-packages/tomlkit/api.py:82: in parse > return Parser(string).parse() > string = 'string = ""\nbytes = ""\nan_int = 0\na_float = > 0.0\na_list = []\na_homogenous_tuple = []\na_hetero_tuple = ["", 0, > 0....-01-01T00:00:00Z\n\n[a_dict]\n\n[a_counter]\n"\\0" = > 0\n\n[a_mapping]\n\n[a_mutable_mapping]\n\n[a_string_enum_dict]\n' > /usr/lib/python3/dist-packages/tomlkit/parser.py:158: in parse > key, value = self._parse_table() > body = {'string': '', 'bytes': '', 'an_int': 0, 'a_float': 0.0, > 'a_list': [], 'a_homogenous_tuple': [], 'a_hetero_tuple': [''...': 'a', > 'a_datetime': DateTime(2000, 1, 1, 0, 0, > tzinfo=datetime.timezone(datetime.timedelta(0), 'UTC')), 'a_dict': {}} > item = (None, <Whitespace '\n'>) > key = <Key a_dict> > self = <tomlkit.parser.Parser object at 0x7f01a9715db0> > value = {} > /usr/lib/python3/dist-packages/tomlkit/parser.py:998: in _parse_table > item = self._parse_item() > comment = '' > cws = '' > full_key = <Key a_counter> > indent = '' > is_aot = False > key = <Key a_counter> > missing_table = False > name_parts = (<Key a_counter>,) > parent = None > parent_name = None > parent_name_parts = () > result = <tomlkit.items.Null object at 0x7f01a9929c90> > self = <tomlkit.parser.Parser object at 0x7f01a9715db0> > table = {} > trail = '\n' > values = {} > /usr/lib/python3/dist-packages/tomlkit/parser.py:242: in _parse_item > return self._parse_key_value(True) > c = '"' > self = <tomlkit.parser.Parser object at 0x7f01a9715db0> > state = <tomlkit.source._State object at 0x7f01a97e4340> > /usr/lib/python3/dist-packages/tomlkit/parser.py:315: in _parse_key_value > key = self._parse_key() > indent = '' > parse_comment = True > self = <tomlkit.parser.Parser object at 0x7f01a9715db0> > /usr/lib/python3/dist-packages/tomlkit/parser.py:362: in _parse_key > return self._parse_quoted_key() > self = <tomlkit.parser.Parser object at 0x7f01a9715db0> > /usr/lib/python3/dist-packages/tomlkit/parser.py:378: in _parse_quoted_key > key_str = self._parse_string( > key_type = <KeyType.Basic: '"'> > original = '' > quote_style = '"' > self = <tomlkit.parser.Parser object at 0x7f01a9715db0> > /usr/lib/python3/dist-packages/tomlkit/parser.py:864: in _parse_string > value += self._parse_escaped_char(delim.is_multiline()) > code = 48 > delim = <StringType.SLB: '"'> > escaped = True > self = <tomlkit.parser.Parser object at 0x7f01a9715db0> > value = '' > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <tomlkit.parser.Parser object at 0x7f01a9715db0>, multiline = False > > def _parse_escaped_char(self, multiline): > if multiline and self._current.is_ws(): > # When the last non-whitespace character on a line is > # a \, it will be trimmed along with all whitespace > # (including newlines) up to the next non-whitespace > # character or closing delimiter. > # """\ > # hello \ > # world""" > tmp = "" > while self._current.is_ws(): > tmp += self._current > # consume the whitespace, EOF here is an issue > # (middle of string) > self.inc(exception=UnexpectedEofError) > continue > > # the escape followed by whitespace must have a newline > # before any other chars > if "\n" not in tmp: > raise self.parse_error(InvalidCharInStringError, > self._current) > > return "" > > if self._current in _escaped: > c = _escaped[self._current] > > # consume this char, EOF here is an issue (middle of string) > self.inc(exception=UnexpectedEofError) > > return c > > if self._current in {"u", "U"}: > # this needs to be a unicode > u, ue = self._peek_unicode(self._current == "U") > if u is not None: > # consume the U char and the unicode value > self.inc_n(len(ue) + 1) > > return u > > raise self.parse_error(InvalidUnicodeValueError) > > > raise self.parse_error(InvalidCharInStringError, self._current) > E tomlkit.exceptions.InvalidCharInStringError: Invalid character '0' in > string at line 20 col 2 > > multiline = False > self = <tomlkit.parser.Parser object at 0x7f01a9715db0> > > /usr/lib/python3/dist-packages/tomlkit/parser.py:775: InvalidCharInStringError > > Falsifying example: test_tomlkit( > everything=Everything(string='', bytes=b'', an_int=0, a_float=0.0, > a_dict={}, a_list=[], a_homogenous_tuple=(), a_hetero_tuple=('', 0, 0.0), > a_counter=Counter({'\\': 0}), a_mapping={}, a_mutable_mapping={}, > a_sequence=[], a_mutable_sequence=[], a_set=set(), a_mutable_set=set(), > a_frozenset=frozenset(), an_int_enum=<AnIntEnum.A: 1>, > a_str_enum=<AStringEnum.A: 'a'>, a_datetime=datetime.datetime(2000, 1, 1, 0, > 0, tzinfo=datetime.timezone.utc), a_string_enum_dict={}), > ) > everything = Everything(string='', bytes=b'', an_int=0, a_float=0.0, > a_dict={}, a_list=[], a_homogenous_tuple=(), a_hetero_tuple=('...tringEnum.A: > 'a'>, a_datetime=datetime.datetime(2000, 1, 1, 0, 0, > tzinfo=datetime.timezone.utc), a_string_enum_dict={}) > > @given( > everythings( > min_key_length=1, > allow_null_bytes_in_keys=False, > allow_quotes_in_keys=False, > allow_control_characters_in_values=False, > ) > ) > def test_tomlkit(everything: Everything): > from tomlkit import dumps as tomlkit_dumps > from tomlkit import loads as tomlkit_loads > > converter = tomlkit_make_converter() > unstructured = converter.unstructure(everything) > raw = tomlkit_dumps(unstructured) > > assert converter.structure(tomlkit_loads(raw), Everything) == > > everything > > converter = <cattr.converters.GenConverter object at 0x7f01a972dd40> > everything = Everything(string='', bytes=b'', an_int=0, a_float=0.0, > a_dict={}, a_list=[], a_homogenous_tuple=(), a_hetero_tuple=('...tringEnum.A: > 'a'>, a_datetime=datetime.datetime(2000, 1, 1, 0, 0, > tzinfo=datetime.timezone.utc), a_string_enum_dict={}) > raw = 'string = ""\nbytes = ""\nan_int = 0\na_float = 0.0\na_list = > []\na_homogenous_tuple = []\na_hetero_tuple = ["", 0, > 0....0-01-01T00:00:00Z\n\n[a_dict]\n\n[a_counter]\n"\\" = > 0\n\n[a_mapping]\n\n[a_mutable_mapping]\n\n[a_string_enum_dict]\n' > tomlkit_dumps = <function dumps at 0x7f01abd85f30> > tomlkit_loads = <function loads at 0x7f01acb552d0> > unstructured = {'a_counter': {'\\': 0}, 'a_datetime': datetime.datetime(2000, > 1, 1, 0, 0, tzinfo=datetime.timezone.utc), 'a_dict': {}, 'a_float': 0.0, ...} > > tests/test_preconf.py:284: > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > /usr/lib/python3/dist-packages/tomlkit/api.py:42: in loads > return parse(string) > string = 'string = ""\nbytes = ""\nan_int = 0\na_float = > 0.0\na_list = []\na_homogenous_tuple = []\na_hetero_tuple = ["", 0, > 0....0-01-01T00:00:00Z\n\n[a_dict]\n\n[a_counter]\n"\\" = > 0\n\n[a_mapping]\n\n[a_mutable_mapping]\n\n[a_string_enum_dict]\n' > /usr/lib/python3/dist-packages/tomlkit/api.py:82: in parse > return Parser(string).parse() > string = 'string = ""\nbytes = ""\nan_int = 0\na_float = > 0.0\na_list = []\na_homogenous_tuple = []\na_hetero_tuple = ["", 0, > 0....0-01-01T00:00:00Z\n\n[a_dict]\n\n[a_counter]\n"\\" = > 0\n\n[a_mapping]\n\n[a_mutable_mapping]\n\n[a_string_enum_dict]\n' > /usr/lib/python3/dist-packages/tomlkit/parser.py:158: in parse > key, value = self._parse_table() > body = {'string': '', 'bytes': '', 'an_int': 0, 'a_float': 0.0, > 'a_list': [], 'a_homogenous_tuple': [], 'a_hetero_tuple': [''...': 'a', > 'a_datetime': DateTime(2000, 1, 1, 0, 0, > tzinfo=datetime.timezone(datetime.timedelta(0), 'UTC')), 'a_dict': {}} > item = (None, <Whitespace '\n'>) > key = <Key a_dict> > self = <tomlkit.parser.Parser object at 0x7f01a967aa70> > value = {} > /usr/lib/python3/dist-packages/tomlkit/parser.py:998: in _parse_table > item = self._parse_item() > comment = '' > cws = '' > full_key = <Key a_counter> > indent = '' > is_aot = False > key = <Key a_counter> > missing_table = False > name_parts = (<Key a_counter>,) > parent = None > parent_name = None > parent_name_parts = () > result = <tomlkit.items.Null object at 0x7f01a9681990> > self = <tomlkit.parser.Parser object at 0x7f01a967aa70> > table = {} > trail = '\n' > values = {} > /usr/lib/python3/dist-packages/tomlkit/parser.py:242: in _parse_item > return self._parse_key_value(True) > c = '"' > self = <tomlkit.parser.Parser object at 0x7f01a967aa70> > state = <tomlkit.source._State object at 0x7f01a9683340> > /usr/lib/python3/dist-packages/tomlkit/parser.py:315: in _parse_key_value > key = self._parse_key() > indent = '' > parse_comment = True > self = <tomlkit.parser.Parser object at 0x7f01a967aa70> > /usr/lib/python3/dist-packages/tomlkit/parser.py:362: in _parse_key > return self._parse_quoted_key() > self = <tomlkit.parser.Parser object at 0x7f01a967aa70> > /usr/lib/python3/dist-packages/tomlkit/parser.py:378: in _parse_quoted_key > key_str = self._parse_string( > key_type = <KeyType.Basic: '"'> > original = '' > quote_style = '"' > self = <tomlkit.parser.Parser object at 0x7f01a967aa70> > _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ > _ > > self = <tomlkit.parser.Parser object at 0x7f01a967aa70> > delim = <StringType.SLB: '"'> > > def _parse_string(self, delim: StringType) -> String: > # only keep parsing for string if the current character matches the > delim > if self._current != delim.unit: > raise self.parse_error( > InternalParserError, > f"Invalid character for string type {delim}", > ) > > # consume the opening/first delim, EOF here is an issue > # (middle of string or middle of delim) > self.inc(exception=UnexpectedEofError) > > if self._current == delim.unit: > # consume the closing/second delim, we do not care if EOF occurs > as > # that would simply imply an empty single line string > if not self.inc() or self._current != delim.unit: > # Empty string > return String(delim, "", "", Trivia()) > > # consume the third delim, EOF here is an issue (middle of string) > self.inc(exception=UnexpectedEofError) > > delim = delim.toggle() # convert delim to multi delim > > self.mark() # to extract the original string with whitespace and all > value = "" > > # A newline immediately following the opening delimiter will be > trimmed. > if delim.is_multiline() and self._current == "\n": > # consume the newline, EOF here is an issue (middle of string) > self.inc(exception=UnexpectedEofError) > > escaped = False # whether the previous key was ESCAPE > while True: > code = ord(self._current) > if ( > delim.is_singleline() > and not escaped > and (code == CHR_DEL or code <= CTRL_CHAR_LIMIT and code != > CTRL_I) > ) or ( > delim.is_multiline() > and not escaped > and ( > code == CHR_DEL > or code <= CTRL_CHAR_LIMIT > and code not in [CTRL_I, CTRL_J, CTRL_M] > ) > ): > > raise self.parse_error(InvalidControlChar, code, "strings") > E tomlkit.exceptions.InvalidControlChar: Control characters > (codes less than 0x1f and 0x7f) are not allowed in strings, use \u000a > instead at line 20 col 7 > > code = 10 > delim = <StringType.SLB: '"'> > escaped = False > self = <tomlkit.parser.Parser object at 0x7f01a967aa70> > value = '" = 0' > > /usr/lib/python3/dist-packages/tomlkit/parser.py:825: InvalidControlChar > =============================== warnings summary > =============================== > .pybuild/cpython3_3.10_cattr/build/tests/test_preconf.py: 190 warnings > /usr/lib/python3/dist-packages/hypothesis/internal/escalation.py:131: > PytestDeprecationWarning: A private pytest class or function was used. > return str(item.repr_failure(ExceptionInfo((type(err), err, tb)))) + "\n" > > -- Docs: https://docs.pytest.org/en/stable/how-to/capture-warnings.html > =========================== short test summary info > ============================ > FAILED tests/test_preconf.py::test_tomlkit - > hypothesis.errors.MultipleFailur... > ==== 1 failed, 139 passed, 1 deselected, 190 warnings in 273.12s (0:04:33) > ===== > E: pybuild pybuild:379: test: plugin pyproject failed with: exit code=1: cd > /<<PKGBUILDDIR>>/.pybuild/cpython3_3.10_cattr/build; python3.10 -m pytest -v > --ignore tests/test_unstructure_collections.py -k 'not test_orjson' > dh_auto_test: error: pybuild --test --test-pytest -i python{version} -p 3.10 > returned exit code 13 The full build log is available from: http://qa-logs.debian.net/2022/10/23/python-cattrs_1.10.0-1_unstable.log All bugs filed during this archive rebuild are listed at: https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=ftbfs-20221023;[email protected] or: https://udd.debian.org/bugs/?release=na&merged=ign&fnewerval=7&flastmodval=7&fusertag=only&fusertagtag=ftbfs-20221023&[email protected]&allbugs=1&cseverity=1&ctags=1&caffected=1#results A list of current common problems and possible solutions is available at http://wiki.debian.org/qa.debian.org/FTBFS . You're welcome to contribute! If you reassign this bug to another package, please marking it as 'affects'-ing this package. See https://www.debian.org/Bugs/server-control#affects If you fail to reproduce this, please provide a build log and diff it with mine so that we can identify if something relevant changed in the meantime.

