2009-07-30 9 views
1

Est-il possible d'obtenir la fonction writedocs() de pydoc pour créer des sous-répertoires pour les packages? Par exemple, disons que je les modules suivants document:Est-ce que pydoc peut générer des sous-répertoires?

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

Quand je lance pydoc.writedocs(), je reçois les fichiers suivants:

foo.html 
dir.bar.html 

Je voudrais obtenir:

foo.html 
dir/bar.html 

Y at-il un moyen de le faire?

Répondre

1

pydoc.writedocs juste des boucles appelant writedoc, qui est documentée (et implémentée) pour "écrire un fichier dans le répertoire courant". La seule issue que je puisse voir est de faire une version modifiée et de la forcer (c'est-à-dire soupirer, monotyper) dans le module, ou d'en saisir un aspect clé, à savoir où 'open' s'ouvre pour écrire les fichiers HTML demandés ouvrir. Plus précisément, dans votre code, vous pouvez faire quelque chose comme:

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 

Pas une solution élégante ou extrêmement robuste, mais « les besoins doivent » ... pydoc tout simplement pas conçu pour vous permettre de faire ce que vous voulez, donc la chose doit être "coincée" un peu.

+0

Ok, bon à savoir. Dans ce cas, je pense que je ne ferai tout simplement pas attention à l'annulation du comportement du module. Mais c'est bon à savoir! Est-ce que python prend des demandes de fonctionnalités pour pydoc? Je suppose que je pourrais simplement soumettre la demande d'une façon ou d'une autre, hein? –

+0

Bien sûr, vous pouvez soumettre une demande de fonctionnalité au tracker python, http://bugs.python.org/ (vous devrez vous inscrire sur le site pour obtenir un ID et un mot de passe et vous connecter avec eux pour obtenir plus que lu -accès uniquement au tracker), mieux fait après avoir vérifié sur le tracker qu'une telle demande n'a pas déjà été saisie. –

Questions connexes