Bug Report
As expected, a class A can be typed as Type[A] or Callable[P, A], where P is a ParamSpec.
Using Concatenate then, you should also be able to bind A to Callable[Concatenate[<type>, P], A], where <type> is the type of A's first constructor parameter, but mypy currently errors when you attempt this.
To Reproduce
gist: https://gist.github.com/mypy-play/1cab71a52f3d7f3a4e9045e6e68eabe0
mypy-playground: https://mypy-play.net/?mypy=latest&python=3.10&gist=1cab71a52f3d7f3a4e9045e6e68eabe0
from __future__ import annotations
from typing import Callable, Concatenate, ParamSpec
P = ParamSpec("P")
class A:
def __init__(self, a_param_1: str) -> None:
...
@classmethod
def add_params(cls: Callable[P, A]) -> Callable[Concatenate[float, P], A]:
def new_constructor(i: float, *args: P.args, **kwargs: P.kwargs) -> A:
return cls(*args, **kwargs)
return new_constructor
@classmethod
def remove_params(cls: Callable[Concatenate[str, P], A]) -> Callable[P, A]:
def new_constructor(*args: P.args, **kwargs: P.kwargs) -> A:
return cls("my_special_str", *args, **kwargs)
return new_constructor
A.add_params() # OK
A.remove_params() # [misc] mypy(error): Invalid self argument "Type[A]" to attribute function "remove_params" with type "Callable[[Callable[[str, **P], A]], Callable[P, A]]"
Expected Behavior
No error should be raised.
Actual Behavior
error: Invalid self argument "Type[A]" to attribute function "remove_params" with type "Callable[[Callable[[str, **P], A]], Callable[P, A]]" [misc]
Your Environment
- Mypy version used: mypy 0.991 (compiled: yes)
- Python version used: 3.10.6
Bug Report
As expected, a class
Acan be typed asType[A]orCallable[P, A], wherePis aParamSpec.Using
Concatenatethen, you should also be able to bindAtoCallable[Concatenate[<type>, P], A], where<type>is the type ofA's first constructor parameter, but mypy currently errors when you attempt this.To Reproduce
gist: https://gist.github.com/mypy-play/1cab71a52f3d7f3a4e9045e6e68eabe0
mypy-playground: https://mypy-play.net/?mypy=latest&python=3.10&gist=1cab71a52f3d7f3a4e9045e6e68eabe0
Expected Behavior
No error should be raised.
Actual Behavior
Your Environment