Ruff non-self-return-type (PYI034)

non-self-return-type в Ruff проверяет код на предупреждение PYI034. Правило относится к группе flake8-pyi.

Почему это неправильно

Файлы заглушек должны точно и компактно описывать интерфейс, иначе типизаторы будут давать неверные подсказки.

Если валидатор показывает это предупреждение, исправьте место, на которое указывает Ruff, ориентируясь на смысл правила non-self-return-type и пример ниже.

Пример ошибки

class Foo:
    def __new__(cls, *args: Any, **kwargs: Any) -> Foo: ...
    def __enter__(self) -> Foo: ...
    async def __aenter__(self) -> Foo: ...
    def __iadd__(self, other: Foo) -> Foo: ...

Как правильно

from typing_extensions import Self

class Foo:
    def __new__(cls, *args: Any, **kwargs: Any) -> Self: ...
    def __enter__(self) -> Self: ...
    async def __aenter__(self) -> Self: ...
    def __iadd__(self, other: Foo) -> Self: ...

Автоисправление

Ruff может предложить автоисправление в некоторых случаях.