Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork33.7k
Closed
Description
Documentation
It seems thattyping.Union[X, Y] as well asX | Y type hints requireX andY to be hashable.
This is not documented as far as I can see.
Considering this example:
@dataclassclassValueRange:lo:inthi:intT1=Annotated[int,ValueRange(-10,5)]
This fails when unioned:
>>> Annotated[int, ValueRange(-10,5)]|None(...) File "/usr/lib64/python3.11/typing.py", line 1375, in __or__ return Union[self, right] ~~~~~^^^^^^^^^^^^^ File "/usr/lib64/python3.11/typing.py", line 358, in inner return func(*args, **kwds) ^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.11/typing.py", line 481, in __getitem__ return self._getitem(self, parameters) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.11/typing.py", line 695, in Union parameters = _remove_dups_flatten(parameters) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.11/typing.py", line 326, in _remove_dups_flatten return tuple(_deduplicate(params)) ^^^^^^^^^^^^^^^^^^^^ File "/usr/lib64/python3.11/typing.py", line 301, in _deduplicate all_params = set(params) ^^^^^^^^^^^ File "/usr/lib64/python3.11/typing.py", line 2151, in __hash__ return hash((self.__origin__, self.__metadata__)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^TypeError: unhashable type: 'ValueRange'
Should this be documented say here:https://docs.python.org/3/library/typing.html?highlight=typing#typing.Annotated ?
And examples here should usefrozen dataclasses:https://docs.python.org/3/library/typing.html?highlight=typing#typing.Annotated ?