Gostaria muito de integrar o pylint ao processo de compilação dos meus projetos python, mas encontrei um show-stopper: um dos tipos de erro que considero extremamente E1101: *%s %r has no %r
member*
úteis-- : - relata constantemente erros ao usar campos django comuns , por exemplo:
E1101:125:get_user_tags: Class 'Tag' has no 'objects' member
que é 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
Como posso ajustar o Pylint para levar em consideração campos como objetos? (Eu também procurei na fonte do Django e não consegui encontrar a implementação de objects
, então suspeito que não seja "apenas" um campo de classe. Por outro lado, sou bastante novo em python, então pode muito bem ter esquecido alguma coisa.)
Edit: A única maneira que eu descobri para dizer ao pylint para não avisar sobre esses avisos é bloqueando todos os erros do tipo (E1101) que não são uma solução aceitável, já que esse é (na minha opinião) um erro extremamente útil. Se houver outra maneira, sem aumentar a fonte pylint, aponte-me para detalhes :)
Veja aqui um resumo dos problemas que tive pychecker
e pyflakes
- eles provaram ser muito instáveis para uso geral. (No caso do psicólogo, as falhas foram originadas no código do psicólogo - não na fonte que estava carregando / invocando.)