Подтвердить что ты не робот

Проблема с получением pylint для поиска унаследованных методов в моделях pylons/SA

У меня есть приложение Pylons, для которого я использую декларативные модели SqlAlchemy. Чтобы сделать код немного чище, я добавляю .query на базу SA и наследую все мои модели от этого.

Итак, в моем приложении .model.meta у меня есть

Base = declarative_base()
metadata = Base.metadata
Session = scoped_session(sessionmaker())

Base.query = Session.query_property(Query)

Я думаю, что наследует это в app.model.mymodel и объявляю его как дочерний элемент meta.Base. Это позволяет мне писать мои запросы как

mymodel.query.filter(mymodel.id == 3).all()

Проблема в том, что pylint не видит .query как действительный атрибут моих моделей.

E:102:JobCounter.reset_count: Class 'JobCounter' has no 'query' member

Очевидно, что эта ошибка встречается повсюду, поскольку она возникает на любой модели, выполняющей любой запрос. Я не хочу просто пропустить ошибку, потому что это может указывать на то, что происходит в классе non-orm, но я должен упустить что-то для pylint, чтобы принять это.

Любые подсказки?

4b9b3361

Ответ 1

Лучшее, что я смог найти, это передать pylint список классов, чтобы игнорировать эту проверку. Он по-прежнему будет выполнять другие проверки для этих классов, вам просто нужно будет сохранить их список:

pylint --ignored-classes=MyModel1,MyModel2 myfile.py

Я знаю, что это не идеально, но есть что-то о том, как sqlalchemy устанавливает модели, которые смущают pylint. По крайней мере с этим вы по-прежнему получаете чек для классов non-orm.