Ruff custom-type-var-for-self (PYI019)
custom-type-var-for-self в Ruff проверяет код на предупреждение PYI019. Правило относится к группе flake8-pyi.
Почему это неправильно
Файлы заглушек должны точно и компактно описывать интерфейс, иначе типизаторы будут давать неверные подсказки.
Если валидатор показывает это предупреждение, исправьте место, на которое указывает Ruff, ориентируясь на смысл правила custom-type-var-for-self и пример ниже.
Пример ошибки
from typing import TypeVar
_S = TypeVar("_S", bound="Foo")
class Foo:
def __new__(cls: type[_S], *args: str, **kwargs: int) -> _S: ...
def foo(self: _S, arg: bytes) -> _S: ...
@classmethod
def bar(cls: type[_S], arg: int) -> _S: ...
Как правильно
from typing import Self
class Foo:
def __new__(cls, *args: str, **kwargs: int) -> Self: ...
def foo(self, arg: bytes) -> Self: ...
@classmethod
def bar(cls, arg: int) -> Self: ...
Автоисправление
Ruff может предложить автоисправление в некоторых случаях.
