Erkennen Sie Änderungen in der API einer Python-Bibliothek

Ich bin ein Python-Softwareentwickler, der sich auf mehrere Bibliotheken von Drittanbietern mit unabhängigen Veröffentlichungszeitplänen verlässt. Obwohl jede Version vor der Bereitstellung getestet werden muss, wäre es hilfreich, sofort zu wissen, dass ein Update garantierte Entwicklungskosten mit sich bringt.

Mit anderen Worten, hat sich die API geändert? Einige Bibliotheken folgen der Semver-Versionierungskonvention , die eine solche Änderung ausdrücklich signalisiert (einschließlich tieferer Änderungen). Aber andere nicht. Für diese möchte ich die API (dh alle Methodensignaturen) überprüfen und einen Bericht über alle Änderungen erstellen.

Ich suche:

  • eine kostenlose Software-Python-Bibliothek
  • die einen Bericht von Klassen-/Methoden-Headern für ein beliebiges Modul (Ordner) generieren kann
  • Führen Sie (idealerweise) einen Unterschied zwischen zwei Modulen durch
  • (idealerweise) Benachrichtigung über Unterschiede auf Semver-Ebene (d. h. Breaking Changes an der API)

Ein Online-Äquivalent, das auf PyPI verfügbare Bibliotheken abdeckt, würde ausreichen, ist aber nicht ideal, da es nicht mit lokalen/privaten Bibliotheken umgehen kann.

Ein IDE-Plugin würde ausreichen, in diesem Fall wäre ein Plugin für die PyCharm Community Edition ideal, ein Plugin für jede andere freie Software-IDE, die Windows-Unterstützung hat, wäre ein Fallback.

Antworten (1)

Sie könnten die Schnittstellensignatur für jede Klasse/Funktion generieren, was WingIDE mit seiner Datei generate_pi.py tut, und die Signaturen vergleichen, aber ich vermute, dass Sie dadurch viel zu viele Fehlalarme erhalten werden, z. B.: wenn ein Positionsparameter ist umbenannt wird (eines, das Sie nie namentlich aufrufen), wird Ihnen immer noch mitgeteilt, dass ein Problem vorliegt.

Der clevere Weg ist, eine anständige automatische Testsuite für Ihren Code zu haben, die so nahe wie möglich an 100% der Codefunktionalität arbeitet - dies ist immer eine wertvolle Investition für sich und die Verwendung von pythons virtualenv , wirklich gute Beschreibung hier , dazu Richten Sie eine virtuelle Umgebung für jede unterstützte Python ein und führen Sie Ihre Tests aus. Sie könnten regelmäßig die Versionen der Bibliotheken überprüfen, die Sie derzeit verwenden, und in jeder virtuellen Umgebung pip install -U Bibliotheken ausführen, dann die Tests ausführen und sehen, ob etwas defekt ist. Sehen Sie sich das Wiki für die Taxonomie von Python-Testwerkzeugen an, um eine Liste möglicher Tools zu erhalten, und im Hitchhikers Guide einige gute Ratschläge.

Persönlich würde ich sagen, dass die Zeit, die mit dem Schreiben von Funktionstests verbracht wird, selten verschwendet wird – beim Schreiben der Tests entdecken Sie oft Probleme, die von anderen noch entdeckt werden müssen, und Sie stellen sicher, dass Ihre Änderungen nichts oder in diesem Fall etwas Äußeres beschädigen Änderungen haben etwas kaputt gemacht.

Außerdem könnten Sie möglicherweise travis-ci oder jenkins verwenden, um diesen Prozess zu automatisieren.