использовали следующий код
import yaml
try:
filterwarnings(yaml.YAMLLoadWarning)
except AttributeError:
pass
Но когда я попытался запустить mypy сегодня, я получил "модуль не имеет атрибута YAMLLoadWarning". Что верно в некоторых версиях Python. Есть ли лучший способ написать это?
EDIT:
Чтобы быть немного понятнее, я знаю, как игнорировать ошибку (и ловить исключение, связанное с Python 3.6 версии pyyaml, не включая это исключение). Мой вопрос больше о работе с парсером. Рассмотрим эти примеры -
Я знаю, что если у вас есть функция, которая возвращает более конкретный тип
def bad(a: Optional[int]) -> int:
return a # Incompatible return value type (got "Optional[int]", expected "int")
Вы можете использовать ветку для принудительного возврата только правильного типа, и анализатор замечает
def good(a: Optional[int]) -> int:
if a:
return a
return 0
Итак, в ситуациях, когда вы обрабатываете ошибки с помощью оператора try / catch, есть ли способ построить это так, чтобы синтаксический анализатор понял, что ошибка атрибута обрабатывается?
def exception_branch(a: Optional[str])-> list:
try:
return a.split() # Item "None" of "Optional[str]" has no attribute "split"
except:
return []