проблема с получением pylint для нахождения унаследованных методов в моделях pylons / SA - PullRequest
12 голосов
/ 31 октября 2010

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

Так что в моем app.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

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

1 Ответ

9 голосов
/ 20 ноября 2010

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

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

Я знаю, что это не идеально, но есть кое-что оТаким образом, sqlalchemy устанавливает модели, которые путают Pylint.По крайней мере, с этим вы все еще получаете чек для не-классных классов.

...