pylint 1.4 informa E1101 (sin miembro) en todas las extensiones C
Hemos sido fanáticos de mucho tiempo depylint
. Su análisis estático se ha convertido en una parte crítica de todos nuestros proyectos de Python y ha ahorrado toneladas de tiempo persiguiendo errores oscuros. Pero después de actualizar de 1.3 -> 1.4, casi todas las extensiones compiladas de c dan como resultado errores E1101 (sin miembros).
Proyectos que anteriormente se ejecutaban perfectamente limpiospylint
1.3 ahora se queja de casi todos los miembros de extensión C con E1101. Nos hemos visto obligados a deshabilitar los errores E1101, pero esto resta materialmente a la utilidad depylint
.
Por ejemplo, este uso perfectamente válido dellxml
paquete
r"""valid.py: demonstrate pylint 1.4 error"""
from lxml import etree
print etree.Element('mydoc')
Ejecute esto a través depylint
e informa:
$ pylint -rn valid.py
No config file found, using default configuration
************* Module valid
E: 3, 6: Module 'lxml.etree' has no 'Element' member (no-member)
Pero es perfectamente válido:
$ python valid.py
<Element mydoc at 7fddf67b1ba8>
Aquí es donde se pone realmente raro. Un pequeño puñado de extensiones C parece funcionar bien a través depylint
, p.ej.:
r"""valid2.py: this one works fine"""
import sqlite3
print sqlite3.version
$ pylint -rn valid2.py
No config file found, using default configuration
Mi pregunta es, ¿alguien más ha sido testigo de esto? Y si es así, ¿estaría dispuesto a compartir su solución / solución?
Hemos experimentado tratando de crear complementos para suprimir estas advertencias (http://docs.pylint.org/plugins.html#enter-plugin), pero tenemos dificultades para hacer cara o cruz de los documentos, y elastroid
La clase base es súper compleja y ha desafiado nuestros intentos de asimilarla.
Para obtener puntos de bonificación reales (y nuestra gratitud eterna) nos encantaría entender qué cambió enpylint
. Estaremos encantados de corregir el código (o al menos publicar un documento de mejores prácticas para autores de extensiones C) que satisfagapylint
.
Detalles de la plataforma
$ pylint --version
No config file found, using default configuration
pylint 1.4.0,
astroid 1.3.2, common 0.63.2
Python 2.7.5 (default, Jul 1 2013, 18:09:11)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-3)]