-
-
Notifications
You must be signed in to change notification settings - Fork 2.9k
ParamspecArgs cannot be used with enumerate #12930
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Labels
Comments
This looks like a bug to me, but here's a workaround in the meantime, that passes mypy: from typing_extensions import ParamSpec
from typing import Callable, TypeVar
P = ParamSpec("P")
R = TypeVar("R")
def foo(func: Callable[P, R]) -> Callable[P, R]:
def _inner(*args: P.args, **kwargs: P.kwargs) -> R:
x = kwargs.pop("x")
y: "enumerate[object]" = enumerate(args)
return func(*args, **kwargs)
return _inner |
@AlexWaygood thanks! |
Here's a repro that doesn't depend on the typeshed stubs for from typing_extensions import ParamSpec
from typing import Callable, TypeVar, Iterator, Iterable, Tuple
P = ParamSpec("P")
T = TypeVar("T")
def enumerate(x: Iterable[T]) -> Iterator[Tuple[int, T]]: ...
def foo(func: Callable[P, T]) -> Callable[P, T]:
def _inner(*args: P.args, **kwargs: P.kwargs) -> T:
x = kwargs.pop("x")
y = enumerate(args) # E: Need type annotation for "y" # E: Argument 1 to "enumerate" has incompatible type "P.args"; expected "Iterable[<nothing>]"
return func(*args, **kwargs)
return _inner |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Bug Report
With #12386 an issue was closed, that ParamSpec cannot be used as tuples and dicts. However, enumerate is seen as invalid, even if it works.
To Reproduce
Expected Behavior
It works fine
Actual Behavior
Your Environment
The text was updated successfully, but these errors were encountered: