2010-10-31 13 views
12

Tengo una aplicación Pylons para la que estoy usando modelos declarativos SqlAlchemy. Para hacer que el código sea un poco más limpio, agrego un .query en la base SA y heredo todos mis modelos de eso.problemas para obtener una pylint para encontrar métodos heredados en pylons/modelos SA

Así que en mi app.model.meta que tienen

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

Base.query = Session.query_property(Query) 

creo que heredan esto en app.model.mymodel y la declara como un hijo de meta.Base. Esto me permite escribir mis consultas como

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

El problema es que no está viendo pylint .query como un atributo válido de mis modelos.

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

Obviamente, este error está por todas partes, ya que ocurre en cualquier modelo que realice una consulta. No quiero omitir el error porque podría señalar algo más adelante en las clases que no son de orm, pero me falta algo para que pilón acepte esto.

¿Alguna pista?

Respuesta

9

Lo mejor que pude encontrar para esto es pasar una lista de clases para ignorar este control. Todavía va a hacer otras comprobaciones para estas clases, que sólo tendrá que mantener una lista de éstos en alguna parte:

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

Sé que no es lo ideal, pero hay algo acerca de la forma en que sqlalchemy establece el modelos que confunden a la pildora. Al menos con esto, todavía obtienes el cheque para las clases que no pertenecen a orm.

+2

Llegué a la misma conclusión, pero lo que hice fue utilizar la bandera de miembros generados para formar una pila. Terminé creando un pylintrc que se comprueba en git con cada proyecto y se agrega como: generated-members = commit, query, add, delete – Rick

Cuestiones relacionadas