Me gustaría mucho integrar pylint en el proceso de compilación para mis proyectos de Python, pero me he encontrado con un show-stopper: uno de los tipos de error que encuentro extremadamente útil: E1101: *%s %r has no %r
member*
- informa constantemente errores al usar campos comunes de django , por ejemplo:
E1101:125:get_user_tags: Class 'Tag' has no 'objects' member
que es causado por este código:
def get_user_tags(username):
"""
Gets all the tags that username has used.
Returns a query set.
"""
return Tag.objects.filter( ## This line triggers the error.
tagownership__users__username__exact=username).distinct()
# Here is the Tag class, models.Model is provided by Django:
class Tag(models.Model):
"""
Model for user-defined strings that help categorize Events on
on a per-user basis.
"""
name = models.CharField(max_length=500, null=False, unique=True)
def __unicode__(self):
return self.name
¿Cómo puedo ajustar Pylint para tener en cuenta correctamente campos como los objetos? (También busqué en la fuente de Django y no pude encontrar la implementación objects
, por lo que sospecho que no es "solo" un campo de clase. Por otro lado, soy bastante nuevo en Python, así que puede muy bien haber pasado por alto algo).
Editar: La única forma en que he encontrado decirle a pylint que no advierta sobre estas advertencias es bloqueando todos los errores del tipo (E1101) que no es una solución aceptable, ya que es (en mi opinión) un error extremadamente útil. Si hay otra forma, sin aumentar la fuente de pylint, indíqueme detalles :)
Vea aquí un resumen de los problemas que he tenido pychecker
y pyflakes
que han demostrado ser muy inestables para uso general. (En el caso de pychecker, los bloqueos se originaron en el código de pychecker, no en el origen que se estaba cargando / invocando).