restructuredText, docstring и python интерактивная оболочка - PullRequest
5 голосов
/ 09 февраля 2011

Я использую reStructuredText для документирования своего кода, чтобы получить красивые офлайн-страницы HTML с помощью epydoc.

Результаты блестящие.Единственным недостатком является то, что когда я использую интерактивную оболочку Python, функция help () не анализирует метаданные reST в строках документации, а вместо этого отображает все как есть.

Есть ли способчтобы help () выполнял минимальный разбор строк документации?

Я не ожидаю рендеринга курсивных шрифтов или гиперссылок, но, по крайней мере, некоторую минимальную очистку для повышения читабельности.

1 Ответ

4 голосов
/ 10 февраля 2011

Функция help() добавляется во встроенное пространство имен с помощью модуля site, который можно настроить, создав модуль sitecustomize.py где-то на вашем пути (очевидно, он обычно хранится в пакетах сайта).

Затем в файле sitecustomize.py вы добавляете любые настройки.

Вы можете справиться с этим двумя способами:

Если вы хотите изменить (кажущееся) поведениеhelp() сама функция, оберните функцию справки в декораторе, что-то вроде:

def help_wrapper(func):
    def inner(*args):
        results = func(*args)
        return your_cleanup_function_here(results)
help = help_wrapper(help)

Лично я бы предпочел немного другое решение, потому что нет никакой информации о том, что будет делать ваша функция очистки, чтобы помочь вывести это не написано в RestructuredText.

Поэтому я бы просто создал функцию-обертку:

def my_help(*args):
    return your_cleanup_function_here(help(*args))

Таким образом, у вас все еще будет доступ к исходной функции help(), есливам это нужно.

CAVEAT: будьте осторожны при выполнении действий в sitecustomize.py, так как все, что вы здесь делаете, вероятно, повлияет на весь сеанс переводчика (и наканунеry сеанс переводчика), что иногда может привести к непредвиденным последствиям.

...