Может ли pydoc генерировать подкаталоги?
Есть ли способ получить функцию pydoc writedocs() для создания подкаталогов для пакетов? Например, допустим, у меня есть следующие модули для документирования:
foo.py
dir/bar.py
dir/__init__.py
Когда я запускаю pydoc.writedocs(), я получаю следующие файлы:
foo.html
dir.bar.html
Я хотел бы получить:
foo.html
dir/bar.html
Есть какой-либо способ сделать это?
1 ответ
pydoc.writedocs
просто звонит writedoc
, который задокументирован (и реализован) для "записи файла в текущий каталог". Единственный выход, который я вижу, это сделать модифицированную версию и заставить ее (т.е. вздыхать, monkeypatching ее) в модуль, или monkeypatching какой-то ключевой аспект этого, а именно, где открывается open для записи запрашиваемых HTML-файлов. открыть. В частности, в вашем коде вы можете сделать что-то вроде:
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
Не элегантное и не очень надежное решение, но "нужно обязательно"... pydoc просто не предназначен для того, чтобы позволить вам делать то, что вы хотите, поэтому эту вещь нужно немного "включить".