python-attrs / cattrs

Composable custom class converters for attrs, dataclasses and friends.
https://catt.rs
MIT License
791 stars 110 forks source link

ModuleNotFoundError with typing_extensions on cattrs v23.2 and python 3.11+ #446

Closed JWCook closed 9 months ago

JWCook commented 9 months ago

Description

It looks like typing_extensions is imported here unconditionally, but the version constraint here only installs it for python < 3.11.

What I Did

In a fresh virtualenv with python 3.11+:

python -m pip install cattrs

Run the first example from the readme:

import cattrs

cattrs.structure([1.0, 2, "3"], tuple[int, int, int])

Traceback:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "~/.virtualenvs/cattrs/lib/python3.11/site-packages/cattrs/__init__.py", line 1, in <module>
    from .converters import BaseConverter, Converter, GenConverter, UnstructureStrategy
  File "~/.virtualenvs/cattrs/lib/python3.11/site-packages/cattrs/converters.py", line 58, in <module>
    from .dispatch import HookFactory, MultiStrategyDispatch, StructureHook, UnstructureHook
  File "~/.virtualenvs/cattrs/lib/python3.11/site-packages/cattrs/dispatch.py", line 5, in <module>
    from typing_extensions import TypeAlias
ModuleNotFoundError: No module named 'typing_extensions'