-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Open
Labels
bugmypy got something wrongmypy got something wrongtopic-type-formTypeForm might fix thisTypeForm might fix this
Description
Please consider
from functools import singledispatch
import typing as tp
@singledispatch
def f(x: tp.Any) -> None: pass
@f.register
def _f_list(x: list[int]) -> None: pass
if __name__ == '__main__':
f([1, 2, 3])
Then
$ mypy sp.py
Success: no issues found in 1 source file
# on import no error as well, so Mypy raising an error would be very useful
$ python -c 'import sp'
On runtime
$ python sp.py
Traceback (most recent call last):
File "/usr/lib/python3.10/functools.py", line 831, in dispatch
impl = dispatch_cache[cls]
File "/usr/lib/python3.10/weakref.py", line 416, in __getitem__
return self.data[ref(key)]
KeyError: <weakref at 0x7f390d605c60; to 'type' at 0x7f390e07bd00 (list)>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3.10/functools.py", line 834, in dispatch
impl = registry[cls]
KeyError: <class 'list'>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/wrobell/projects/rbfly/sp.py", line 11, in <module>
f([1, 2, 3])
File "/usr/lib/python3.10/functools.py", line 878, in wrapper
return dispatch(args[0].__class__)(*args, **kw)
File "/usr/lib/python3.10/functools.py", line 836, in dispatch
impl = _find_impl(cls, registry)
File "/usr/lib/python3.10/functools.py", line 783, in _find_impl
mro = _compose_mro(cls, registry.keys())
File "/usr/lib/python3.10/functools.py", line 744, in _compose_mro
types = [n for n in types if is_related(n)]
File "/usr/lib/python3.10/functools.py", line 744, in <listcomp>
types = [n for n in types if is_related(n)]
File "/usr/lib/python3.10/functools.py", line 743, in is_related
and issubclass(cls, typ))
TypeError: issubclass() argument 2 cannot be a parameterized generic
Some context (in general we need to be better at distinguishing between Python types and annotation types)
AlexWaygood
Metadata
Metadata
Assignees
Labels
bugmypy got something wrongmypy got something wrongtopic-type-formTypeForm might fix thisTypeForm might fix this