Код в официальном документе библиотеки attrs делает проверку типа пирайта причиной reportAttributeAccessIssue
from attrs import define, field
@define
class C:
x: int = field()
@x.validator
def _check_x(self, attribute, value):
if value > 42:
raise ValueError("x must be smaller or equal to 42")
qwer.py:8:8 - error: Cannot access member "validator" for type "int"
Member "validator" is unknown (reportAttributeAccessIssue)
1 error, 0 warnings, 0 informations
Вместо того, чтобы игнорировать проблему, есть ли способ ее решить?
Также я бы рассмотрел возможность удаления декоратора @x.validator
и замены его на x: int = field(validator=[self. _check_x])
.
FTR, я задавал аналогичный вопрос, но для PyCharm. Он так и не получил ответа.
@JohnnyCheesecutter Я просто предпочитаю свести к минимуму использование внешних библиотек, поэтому не использую pydantic
Поддержка attrs со стороны Пайрайта, к сожалению, совершенно недостаточна. Они заняли жесткую позицию, поддерживая только то, что стандартизируется через PEP, для нового API «преобразования класса данных».
Привет, США, пока люди ищут проблему, я хотел бы задаться вопросом, почему вы не решили использовать
pydantic
для проверки класса? Это одна из самых удобных библиотек для проверки.