Проверка ключа в словаре без сравнения магических значенийPython

Программы на Python
Anonymous
Проверка ключа в словаре без сравнения магических значений

Сообщение Anonymous »

Я использую pydantic в проекте для проверки форматирования файла объекта, а также pylint для проверки. Всякий раз, когда я читаю файл с недопустимым форматом, я хочу вызвать исключение с описательным сообщением. Код, который я использую, выглядит примерно так:

Код: Выделить всё

# try code...
except pydantic.ValidationError as ve:
errors = ve.errors(
include_url=False,
include_input=False,
include_context=False,
)
messages = []
for error in errors:
message = f"{error['type']} at {'.'.join(str(error['loc']))}."
if "input" in error:
message = f"{message} Got {error['input']}"
messages.append(message)
message = "\n".join(messages)
И все работает отлично. Моя проблема в том, что

Код: Выделить всё

if "input" in error
это магическое сравнение значений. Я понимаю, почему, и знаю, что мог бы сделать что-то вроде

Код: Выделить всё

VE_ERROR_INPUT_KEY = "input"
for error in errors:
message = f"{error['type']} at {'.'.join(str(error['loc']))}."
if VE_ERROR_INPUT_KEY in error:
message = f"{message} Got {error['input']}"
чтобы «решить» проблему. Однако я думаю, что создание константы для ключа dict сторонней библиотеки для использования в одном сравнении не является хорошей практикой.
Я не хочу отключите сравнение магических значений, поскольку в большинстве случаев я считаю это хорошей практикой, но я также не хочу создавать константу для одного сравнения. Мое идеальное решение — изменить способ выполнения этой проверки, но другого способа я не нашел. Стоит ли мне просто отключить линтер для этой (и других подобных) строк?

Подробнее здесь: https://stackoverflow.com/questions/786 ... comparison

Вернуться в «Python»