Проверка ключа в словаре без сравнения магических значений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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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