Получить имя атрибута при исключении в конвертере

Когда в валидаторе произошла ошибка, можно добавить имя ошибочного атрибута в сообщение об ошибке, потому что это имя передано валидатору.

Но если в конвертере произошла ошибка, я не вижу способа получить имя атрибута с ошибкой, например

@attr.s
class Test:
    attr1 = attr.ib(converter=int, validator=attr.validators.in_([1,2,3]))
    attr2 = attr.ib(converter=int, validator=attr.validators.in_([1,2,3]))

>>> Test('1', '2a')

ValueError: invalid literal for int() with base 10: '2a'

Как я могу справиться с этим делом?

1 ответ

К сожалению, в настоящее время это невозможно, так как converter получает только значение и ничего больше. Код, который генерирует attrs в вашем случае:

self.attr1 = int(attr1)

Я думаю, что это косвенно связано с https://github.com/python-attrs/attrs/issues/146.

Другие вопросы по тегам