`test_py36_class_syntax_usage` fails on py 3.14.0a6
=================================== FAILURES ===================================
_________________ TypedDictTests.test_py36_class_syntax_usage __________________
self = <testextensions.TypedDictTests testMethod=test_py36_class_syntax_usage>
def test_py36_class_syntax_usage(self):
self.assertEqual(LabelPoint2D.__name__, 'LabelPoint2D') # noqa
self.assertEqual(LabelPoint2D.__module__, __name__) # noqa
> self.assertEqual(LabelPoint2D.__annotations__, {'x': int, 'y': int, 'label': str}) # noqa
E AssertionError: {'label': <class 'str'>} != {'x': <class 'int'>, 'y': <class 'int'>, 'label': <class 'str'>}
E - {'label': <class 'str'>}
E + {'label': <class 'str'>, 'x': <class 'int'>, 'y': <class 'int'>}
tests/testextensions.py:105: AssertionError
=========================== short test summary info ============================
FAILED tests/testextensions.py::TypedDictTests::test_py36_class_syntax_usage - AssertionError: {'label': <class 'str'>} != {'x': <class 'int'>, 'y': <clas...
========================= 1 failed, 11 passed in 0.08s =========================
Found while building both mypy-extensions 1.0.0 and 1.1.0 on NixOS.
Building against python 3.14.0a6. Python 3.14 is expected to release 2025-10-07, so there is still time to fix this.
I understand python 3.14 is currently an alpha, but it imo it makes sense to report these things as early as they are found.
This looks like it's related to the PEP 649 implementation in Python 3.14. /CC @JelleZijlstra
This is because mypy_extensions.TypedDict looks at __annotations__ in the class dict, which no longer works.
The easiest fix would be to just re-export typing.TypedDict on newer Python versions.
The easiest fix would be to just re-export
typing.TypedDicton newer Python versions.
Ideally yes, however support for the keyword-argument syntax was removed in 3.13 which is still "supported" here.
https://github.com/python/mypy_extensions/blob/9fc7fe08c8e638cdd9bbf1aa9bf188aef4fd24ef/tests/testextensions.py#L69-L70
Another fix would be to apply the changes to typing.TypedDict from 3.14 to this implementation.