cattrs icon indicating copy to clipboard operation
cattrs copied to clipboard

Python 3.14.0a4: TypeError: <class '…'> has no usable non-default attributes

Open musicinmybrain opened this issue 10 months ago • 5 comments

In Fedora, we’re already testing Python packages with pre-releases of Python 3.14, which will be included in Fedora 43 in late 2025. This report is based on a downstream issue that was filed as part of that testing.

It seems like the regressions in the test suite are all associated with a single type of error, of the form TypeError: <class '…'> has no usable non-default attributes.

A “control” test, showing that everything is fine on Python 3.13:

$ uv venv _e
Using CPython 3.13.1 interpreter at: /usr/bin/python3
Creating virtual environment at: _e
Activate with: source _e/bin/activate
$ . _e/bin/activate
(_e) $ uv pip install tox pdm
[…]
(_e) $ tox -e py313
[…]
============================ 827 passed, 6 skipped, 15 xfailed in 23.58s =============================

Now, after commenting out the orjson extra since we won’t be able to uv pip install it successfully on Python 3.14 yet:

(_e) $ tox -e py314

Ignoring the failures and errors (No module named 'orjson') due to the now-missing orjson dependency:

====================================== short test summary info =======================================
FAILED tests/strategies/test_include_subclasses.py::test_structure_as_union - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-defaul...
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-grandchild-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
FAILED tests/strategies/test_include_subclasses.py::test_structuring_unstructuring_unknown_subclass - TypeError: <class 'tests.strategies.test_include_subclasses.test_structuring_unstructuring_unknow...
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-parent-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-defaul...
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-child1-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-defaul...
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-child2-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-defaul...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-parent-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-child1-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-child1-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-child2-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_circular_reference[with-subclasses] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-defaul...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-child2-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-grandchild-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-grandchild-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-parent-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-defaul...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default at...

musicinmybrain avatar Feb 09 '25 20:02 musicinmybrain

Could it perhaps be related to https://docs.python.org/3.14/whatsnew/3.14.html#whatsnew314-pep649 similarly to https://github.com/jcrist/msgspec/pull/810 ?

hroncok avatar Feb 10 '25 17:02 hroncok

Current failures with 3.14.0a6:

FAILED tests/strategies/test_include_subclasses.py::test_structure_as_union - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-parent-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
FAILED tests/strategies/test_include_subclasses.py::test_structuring_unstructuring_unknown_subclass - TypeError: <class 'tests.strategies.test_include_subclasses.test_structuring_unstructuring_unknown_subclass.<locals>.A1'> has no usable non-default attributes
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-child1-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-child2-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-grandchild-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
FAILED tests/test_generics.py::test_deep_copy - assert list[~T | None] == list[int | None]
FAILED tests/test_generics.py::test_structure_nested_generics_with_cols[True-int-result0] - cattrs.errors.ClassValidationError: While structuring GenericCols (1 sub-exception)
FAILED tests/test_generics.py::test_structure_nested_generics_with_cols[False-int-result0] - cattrs.errors.StructureHandlerNotFoundError: Unsupported type: ~T. Register a structure hook for it.
FAILED tests/test_gen_dict.py::test_type_names_with_quotes - cattrs.errors.StructureHandlerNotFoundError: Unsupported type: typing.Literal['a', 2, 3] | typing.Literal[4]. Register a structure hook for it.
FAILED tests/test_self.py::test_self_roundtrip[True] - AssertionError: assert {'myself': Wi...efault': None} == {'myself': {'...efault': None}
FAILED tests/test_self.py::test_self_roundtrip[False] - AssertionError: assert {'myself': Wi...efault': None} == {'myself': {'...efault': None}
FAILED tests/test_self.py::test_self_roundtrip_dataclass[True] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_self_roundtrip_dataclass[False] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_self_roundtrip_typeddict[True] - cattrs.errors.ClassValidationError: While structuring WithSelfTypedDict (1 sub-exception)
FAILED tests/test_self.py::test_self_roundtrip_typeddict[False] - cattrs.errors.StructureHandlerNotFoundError: Unsupported type: typing.Self. Register a structure hook for it.
FAILED tests/test_self.py::test_self_roundtrip_namedtuple[True] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_self_roundtrip_namedtuple[False] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_subclass_roundtrip[True] - AssertionError: assert {'myself': Wi...efault': None} == {'myself': {'...efault': None}
FAILED tests/test_self.py::test_subclass_roundtrip[False] - AssertionError: assert {'myself': Wi...efault': None} == {'myself': {'...efault': None}
FAILED tests/test_self.py::test_subclass_roundtrip_dataclass[True] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_subclass_roundtrip_dataclass[False] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_nested_roundtrip[True] - AssertionError: assert {'myself': Wi...ault': None}]} == {'myself': {'...ault': None}]}
FAILED tests/test_self.py::test_nested_roundtrip[False] - AssertionError: assert {'myself': Wi...ault': None}]} == {'myself': {'...ault': None}]}
FAILED tests/test_disambiguators.py::test_disambiguate_from_discriminated_enum - AssertionError: assert tests.test_disambiguators.test_disambiguate_from_discriminated_enum.<locals>.F | tests.test_disambiguators.test_disambiguate_from_discriminated_enum.<locals>.G is tests.test_disambiguators.test_dis...
FAILED tests/test_structure.py::test_structuring_unsupported - AssertionError: assert int | str is int | str
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-parent-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_circular_reference[with-subclasses] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-child1-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-parent-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-child2-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-child1-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-child2-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-grandchild-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-grandchild-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes

Many of the new failures are caused by https://github.com/python/cpython/issues/131933

test.log.txt

hroncok avatar Mar 31 '25 10:03 hroncok

Python 3.14.0a6. With https://github.com/python-attrs/cattrs/pull/642 merged, we are at:

FAILED tests/strategies/test_include_subclasses.py::test_structure_as_union - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
FAILED tests/strategies/test_include_subclasses.py::test_structuring_unstructuring_unknown_subclass - TypeError: <class 'tests.strategies.test_include_subclasses.test_structuring_unstructuring_unknown_subclass.<locals>.A'> has no usable non-default attributes
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-parent-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-child1-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-child2-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
FAILED tests/strategies/test_include_subclasses.py::test_overrides[wo-union-strategy-grandchild-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
FAILED tests/test_gen_dict.py::test_type_names_with_quotes - cattrs.errors.StructureHandlerNotFoundError: Unsupported type: typing.Literal['a', 2, 3] | typing.Literal[4]. Register a structure hook for it.
FAILED tests/test_generics.py::test_deep_copy - assert list[~T | None] == list[int | None]
FAILED tests/test_generics.py::test_structure_nested_generics_with_cols[True-int-result0] - cattrs.errors.ClassValidationError: While structuring GenericCols (1 sub-exception)
FAILED tests/test_generics.py::test_structure_nested_generics_with_cols[False-int-result0] - cattrs.errors.StructureHandlerNotFoundError: Unsupported type: ~T. Register a structure hook for it.
FAILED tests/test_self.py::test_self_roundtrip[True] - AssertionError: assert {'myself': Wi...efault': None} == {'myself': {'...efault': None}
FAILED tests/test_self.py::test_self_roundtrip[False] - AssertionError: assert {'myself': Wi...efault': None} == {'myself': {'...efault': None}
FAILED tests/test_self.py::test_self_roundtrip_dataclass[True] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_self_roundtrip_dataclass[False] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_self_roundtrip_typeddict[True] - cattrs.errors.ClassValidationError: While structuring WithSelfTypedDict (1 sub-exception)
FAILED tests/test_self.py::test_self_roundtrip_typeddict[False] - cattrs.errors.StructureHandlerNotFoundError: Unsupported type: typing.Self. Register a structure hook for it.
FAILED tests/test_self.py::test_self_roundtrip_namedtuple[True] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_self_roundtrip_namedtuple[False] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_subclass_roundtrip[True] - AssertionError: assert {'myself': Wi...efault': None} == {'myself': {'...efault': None}
FAILED tests/test_self.py::test_subclass_roundtrip[False] - AssertionError: assert {'myself': Wi...efault': None} == {'myself': {'...efault': None}
FAILED tests/test_self.py::test_subclass_roundtrip_dataclass[True] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_subclass_roundtrip_dataclass[False] - AssertionError: assert {'myself': Wi...(myself=None)} == {'myself': {'myself': None}}
FAILED tests/test_self.py::test_nested_roundtrip[True] - AssertionError: assert {'myself': Wi...ault': None}]} == {'myself': {'...ault': None}]}
FAILED tests/test_self.py::test_nested_roundtrip[False] - AssertionError: assert {'myself': Wi...ault': None}]} == {'myself': {'...ault': None}]}
FAILED tests/test_structure.py::test_structuring_unsupported - AssertionError: assert int | str is int | str
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-parent-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-child1-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_circular_reference[with-subclasses] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-child2-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-grandchild-only] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-non-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-parent-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-parent] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-child1-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-child] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-child2-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_structuring_with_inheritance[with-subclasses-union-compose-grandchild] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-grandchild-only] - TypeError: <class 'tests.strategies.test_include_subclasses.Child1'> has no usable non-default attributes
ERROR tests/strategies/test_include_subclasses.py::test_unstructuring_with_inheritance[with-subclasses-non-union-container] - TypeError: <class 'tests.strategies.test_include_subclasses.GrandChild'> has no usable non-default attributes

hroncok avatar Mar 31 '25 17:03 hroncok

Polite ping. Python 3.14 is now at 3.14.0b2, so there should not be any further incompatible changes to the Python interpreter before the final release, and we are still seeing the above failures and errors with cattrs 25.1.0.

musicinmybrain avatar Jun 02 '25 11:06 musicinmybrain

Yep, it's time for us to start looking at 3.14, no worries.

Tinche avatar Jun 02 '25 11:06 Tinche