pylint 1.4 meldet E1101 (kein Mitglied) für alle C-Erweiterungen

Wir sind langjährige Fans vonpylint. Die statische Analyse ist zu einem wichtigen Bestandteil all unserer Python-Projekte geworden und hat Tonnen von Zeit gespart, um unbekannte Fehler zu suchen. Nach dem Upgrade von 1.3 -> 1.4 führen jedoch fast alle kompilierten c-Erweiterungen zu E1101-Fehlern (keine Mitglieder).

Projekte, die zuvor einwandfrei durchlaufen wurdenpylint 1.3 beschweren sich jetzt über fast jedes C-Extension-Mitglied mit E1101. Wir mussten E1101-Fehler deaktivieren, was jedoch die Nützlichkeit von @ erheblich beeinträchtigpylint.

Zum Beispiel ist diese vollkommen gültige Verwendung deslxml package

r"""valid.py: demonstrate pylint 1.4 error"""
from lxml import etree
print etree.Element('mydoc')

Run this throughpylint, und es meldet:

$ 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)

Aber es ist vollkommen gültig:

$ python valid.py
<Element mydoc at 7fddf67b1ba8>

Hier wird es richtig komisch. Eine sehr kleine Handvoll C-Erweiterungen scheinen durch @ gut zu funktionierpylint, z.B.

r"""valid2.py: this one works fine"""
import sqlite3
print sqlite3.version

$ pylint -rn valid2.py
No config file found, using default configuration

Meine Frage ist, hat jemand dies miterlebt? Und wenn ja, möchten Sie uns Ihre Problemumgehung / Lösung mitteilen?

Wir haben versucht, Plugins zu erstellen, um diese Warnungen zu unterdrücken http: //docs.pylint.org/plugins.html#enter-plugi), aber wir haben Schwierigkeiten, Kopf oder Fuß der Dokumente zu machen - und dasastroid Basisklasse ist überkompliziert und hat sich unseren Versuchen widersetzt.

Für echte Bonuspunkte (und unsere ewige Dankbarkeit) würden wir gerne verstehen, was sich in @ geändert hapylint. Wir würden uns freuen, den Code zu korrigieren (oder zumindest ein Best-Practice-Dokument für C-Erweiterungsautoren zu veröffentlichen), derpylint.

Plattformdetails

$ 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)]

Antworten auf die Frage(8)

Ihre Antwort auf die Frage