Ruff bad-exit-annotation (PYI036)

bad-exit-annotation в Ruff проверяет код на предупреждение PYI036. Правило относится к группе flake8-pyi.

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

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

Если валидатор показывает это предупреждение, исправьте место, на которое указывает Ruff, ориентируясь на смысл правила bad-exit-annotation и пример ниже.

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

from types import TracebackType

class Foo:
    def __exit__(
        self, typ: BaseException, exc: BaseException, tb: TracebackType
    ) -> None: ...

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

from types import TracebackType

class Foo:
    def __exit__(
        self,
        typ: type[BaseException] | None,
        exc: BaseException | None,
        tb: TracebackType | None,
    ) -> None: ...

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

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