Message397803
@Serhiy, this doesn't just affect typing.Union, it seems that the rest of the typing types don't substitute:
>>> (int | T)[typing.List[str]]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: Each union arg must be a type, got typing.List[str]
We should probably loosen the check during the union_getitem substitution -- no need to raise the TypeError or check for is_union, just blindly replace the TypeVar. We already do this for types.GenericAlias:
>>> list[T][1]
list[1]
Or if you want to continue checking, maybe checking for PyCallable_Check(obj) in substitution is enough - typing internally accepts callable(o) too:
https://github.com/python/cpython/blob/3.10/Lib/typing.py#L146 |
|
| Date |
User |
Action |
Args |
| 2021-07-19 14:56:50 | kj | set | recipients:
+ kj, gvanrossum, serhiy.storchaka, uriyyo |
| 2021-07-19 14:56:50 | kj | set | messageid: <[email protected]> |
| 2021-07-19 14:56:50 | kj | link | issue44653 messages |
| 2021-07-19 14:56:50 | kj | create | |
|