Получить имя атрибута при исключении в конвертере - PullRequest
0 голосов
/ 10 января 2019

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

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

@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 Ответ

0 голосов
/ 16 января 2019

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

self.attr1 = int(attr1)

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

...