Suche: Python Code Parser

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
MoonKid
User
Beiträge: 106
Registriert: Mittwoch 10. Dezember 2014, 16:24

Ich suche ein Package das mir den Code mehrer py-files bis auf die ebene der Methode parsed.

Ich stelle mir dann, das Ergebnis in etwa so vor:

Code: Alles auswählen

# get code of a specific method
code = result['filename.py']['ClassName']['function'].code

# methods of a class
result['filename.py']['ClassName'].keys

# classes
result['filename.py'].keys
Sirius3
User
Beiträge: 18273
Registriert: Sonntag 21. Oktober 2012, 17:20

Du suchst das ast-Modul?
Benutzeravatar
__blackjack__
User
Beiträge: 14053
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Es gibt auch diverse Module die darauf aufbauen oder es alternativ implementieren. Für verschiedene Anwendungszwecke. Und eventuell reicht das für Dich auch gar nicht, denn parsen des Quelltextes gibt ja nur das was man da halt so statisch heraus findet. Wenn man wissen möchte welche Attribute ein Objekt zur Laufzeit tatsächlich hat, muss man wohl oder übel den Code auch ausführen der die Objekte definiert.

Edit: Es könnte also auch sein, dass Du das `inspect`-Modul suchst.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
MoonKid
User
Beiträge: 106
Registriert: Mittwoch 10. Dezember 2014, 16:24

Zur Laufzeit muss es nicht sein. Ich möchte nur den Code meiner eigenen Anwendung parsen. Ich habe da ein Observer-Pattern implementiert und kann nur schwer den Überblick behalten, wo Registrierungen beim Observern passieren und wo die Observer notify's abfeuern.

Aus Parser-Perspektive: Ich muss alle Zeilen mit "event_*" finden. Brauche aber auch den Kontext, d.h. in welcher Methode von welcher Klasse und welchem Codefile taucht das auf.

ast sah auf den ersten Blick gut aus, ist aber viel zu kompliziert - obwohl ich es mittlerweile verstanden habe. Da erscheint es mir einfacher, wenn ich meinen Code selbst parse.
Antworten