Как mypy игнорировать одну строку в исходном файле?

Я использую mypy в своем проекте Python для проверки типов. Я также использую PyYAML для чтения и записи файлов конфигурации проекта. К сожалению, при использовании рекомендованного механизма импорта из документации PyYAML это приводит к ложной ошибке в предложении try/исключением, которое пытается импортировать собственные библиотеки:

from yaml import load, dump
try:
    from yaml import CLoader as Loader, CDumper as Dumper
except ImportError:
    from yaml import Loader, Dumper

В моей системе CLoader и CDumper отсутствуют, что приводит к ошибке error: Module 'yaml' has no attribute 'CLoader' а error: Module 'yaml' has no attribute 'CDumper'.

Есть ли способ заставить mypy игнорировать ошибки в этой строке? Я надеялся, что смогу сделать что-то подобное, чтобы mypy пропустил эту строку:

from yaml import load, dump
try:
    from yaml import CLoader as Loader, CDumper as Dumper  # nomypy
except ImportError:
    from yaml import Loader, Dumper

Ответы

Ответ 1

Вы можете сделать это с # type: ignore начиная с 0,57 (см. # 500, игнорировать определенные строки):

PEP 484 использует # type: ignore для игнорирования ошибок типов в определенных строках, и mypy должна это поддерживать. Кроме того, использование # type: ignore близко к началу файла должно полностью пропустить проверку этого файла.