Je suis en train d'essayer d'utiliser de nouvelles indications de type de Python 3.12, et soudain PyCharm met en évidence un problème obscur concernant l'utilisation de ParamSpec
.
import functools
from dataclasses import dataclass
from typing import Callable
from typing import Concatenate
@dataclass
class Message:
text: str
type CheckFunc[**P] = Callable[Concatenate[Message, P], None]
def check_is_command_not_answer[**P](func: CheckFunc[P]) -> CheckFunc[P]:
@functools.wraps(func)
def inner(message: Message, *args: P.args, **kwargs: P.kwargs) -> None:
if message.text:
...
else:
return func(message, *args, **kwargs)
return inner
Sur return inner
, PyCharm le reproche :
Type attendu '(Message, ParamSpec("P")) -> None', obtenu '(message: Message, ParamSpec("P"), ParamSpec("P")) -> None' à la place
BTW, j'utilise ce décorateur ici et là, et le code fonctionne parfaitement. Pyright ne se plaint pas de problèmes ici non plus.
Je ne parviens pas à repérer le problème. Pouvez-vous ?