2009-07-30 5 views
1

Gibt es eine Möglichkeit, pydocs writedocs() Funktion zu erhalten, um Unterverzeichnisse für Pakete zu erstellen? Zum Beispiel, sagen wir, ich die folgenden Module zu dokumentieren haben:Kann pydoc Unterverzeichnisse generieren?

foo.py 
dir/bar.py 
dir/__init__.py 

Wenn ich laufen pydoc.writedocs(), habe ich die folgenden Dateien erhalten:

foo.html 
dir.bar.html 

Ich mag würde bekommen:

foo.html 
dir/bar.html 

Gibt es eine Möglichkeit, dies zu tun?

Antwort

1

pydoc.writedocs nur Loops aufrufen , die dokumentiert ist (und implementiert), "eine Datei im aktuellen Verzeichnis zu schreiben". Der einzige Ausweg, den ich sehen kann, besteht darin, eine modifizierte Version zu erstellen und sie in das Modul zu zwingen oder einen wichtigen Aspekt davon anzupassen, nämlich, wo 'öffnen' sich öffnet, um die angeforderten HTML-Dateien zu schreiben öffnen. Genauer gesagt, in Ihrem Code, Sie so etwas wie tun könnten:

import pydoc 

def monkey_open(name, option): 
    if option == 'w' and name.endswith('.html'): 
    name_pieces = name.split('.') 
    name_pieces[-2:] = '.'.join(name_pieces[-2:]) 
    name = '/'.join(name_pieces) 
    return open(name, option) 

pydoc.open = monkey_open 

Nicht eine elegante oder extrem robuste Lösung, aber „Bedürfnisse müssen“ ... pydoc ist einfach nicht konzipiert, dass Sie tun, was Sie wollen, also muss das Ding ein bisschen "eingeschoren" werden.

+0

Ok, gut zu wissen. In diesem Fall denke ich, dass ich einfach nicht darüber hinwegtäuschen werde, das Verhalten des Moduls zu übersteuern. Aber es ist gut zu wissen! Macht Python Feature-Anfragen für Pydoc? Ich nehme an, ich könnte die Anfrage irgendwie einreichen, oder? –

+0

Sicher, Sie können eine Feature-Anfrage an den Python-Tracker senden, http://bugs.python.org/ (Sie müssen sich auf der Site registrieren, um eine ID und ein Passwort zu erhalten und sich mit ihnen einzuloggen, um mehr zu lesen - nur Zugriff auf den Tracker), besser nach Überprüfung des Trackers, dass keine solche Anfrage bereits eingegeben wurde. –