pyclbr — Unterstützung für Python-Modulbrowser

Quellcode: Lib/pyclbr.py


Das Modul pyclbr liefert begrenzte Informationen über die Funktionen, Klassen und Methoden, die in einem in Python geschriebenen Modul definiert sind. Die Informationen genügen, um einen Modulbrowser umzusetzen. Sie werden aus dem Python-Quellcode gewonnen und nicht durch Importieren des Moduls, deshalb lässt sich dieses Modul gefahrlos mit nicht vertrauenswürdigem Code verwenden. Diese Einschränkung macht es unmöglich, dieses Modul mit Modulen zu verwenden, die nicht in Python umgesetzt sind, also auch mit allen standardmäßigen und wahlfreien Erweiterungsmodulen.

pyclbr.readmodule(module, path=None)

Gibt ein Dictionary zurück, das Klassennamen auf Modulebene auf Klassendeskriptoren abbildet. Wo möglich, sind Deskriptoren für importierte Basisklassen enthalten. Der Parameter module ist eine Zeichenkette mit dem Namen des zu lesenden Moduls, der auch der Name eines Moduls innerhalb eines Pakets sein darf. Ist path angegeben, ist es eine Folge von Verzeichnispfaden, die sys.path vorangestellt wird und über die der Quellcode des Moduls gefunden wird.

Diese Funktion ist die ursprüngliche Schnittstelle und wird nur zur Abwärtskompatibilität beibehalten. Sie gibt eine gefilterte Fassung der folgenden zurück.

pyclbr.readmodule_ex(module, path=None)

Gibt einen auf Dictionarys beruhenden Baum zurück, der für jede Funktion und jede Klasse, die im Modul mit einer def- oder class-Anweisung definiert ist, einen Funktions- oder Klassendeskriptor enthält. Das zurückgegebene Dictionary bildet Funktions- und Klassennamen auf Modulebene auf ihre Deskriptoren ab. Verschachtelte Objekte werden in das children-Dictionary ihres Elternobjekts eingetragen. Wie bei readmodule benennt module das zu lesende Modul, und path wird sys.path vorangestellt. Ist das gelesene Modul ein Paket, hat das zurückgegebene Dictionary einen Schlüssel '__path__', dessen Wert eine Liste mit dem Suchpfad des Pakets ist.

Added in version 3.7: Deskriptoren für verschachtelte Definitionen. Auf sie wird über das neue Attribut children zugegriffen. Jeder hat ein neues Attribut parent.

Die Deskriptoren, die diese Funktionen zurückgeben, sind Instanzen der Klassen Function und Class. Es ist nicht vorgesehen, dass Nutzer Instanzen dieser Klassen erzeugen.

Function-Objekte

class pyclbr.Function

Instanzen der Klasse Function beschreiben Funktionen, die durch def-Anweisungen definiert sind. Sie haben die folgenden Attribute:

file

Name der Datei, in der die Funktion definiert ist.

module

Der Name des Moduls, das die beschriebene Funktion definiert.

name

Der Name der Funktion.

lineno

Die Zeilennummer in der Datei, an der die Definition beginnt.

parent

Bei Funktionen der obersten Ebene None. Bei verschachtelten Funktionen das Elternobjekt.

Added in version 3.7.

children

Ein Dictionary, das Namen auf Deskriptoren für verschachtelte Funktionen und Klassen abbildet.

Added in version 3.7.

is_async

True für Funktionen, die mit dem vorangestellten async definiert sind, sonst False.

Added in version 3.10.

Klassenobjekte

class pyclbr.Class

Instanzen der Klasse Class beschreiben Klassen, die durch class-Anweisungen definiert sind. Sie haben dieselben Attribute wie Functions und zwei weitere.

file

Name der Datei, in der die Klasse definiert ist.

module

Der Name des Moduls, das die beschriebene Klasse definiert.

name

Der Name der Klasse.

lineno

Die Zeilennummer in der Datei, an der die Definition beginnt.

parent

Bei Klassen der obersten Ebene None. Bei verschachtelten Klassen das Elternobjekt.

Added in version 3.7.

children

Ein Dictionary, das Namen auf Deskriptoren für verschachtelte Funktionen und Klassen abbildet.

Added in version 3.7.

super

Eine Liste von Class-Objekten, die die unmittelbaren Basisklassen der beschriebenen Klasse beschreiben. Klassen, die als Oberklassen benannt sind, die readmodule_ex() aber nicht finden kann, werden als Zeichenkette mit dem Klassennamen aufgeführt und nicht als Class-Objekte.

methods

Ein Dictionary, das Methodennamen auf Zeilennummern abbildet. Das lässt sich aus dem neueren children-Dictionary ableiten, bleibt aber zur Abwärtskompatibilität erhalten.