Может ли 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 просто не предназначен для того, чтобы позволить вам делать то, что вы хотите, поэтому эту вещь нужно немного "включить".

Другие вопросы по тегам