Можно ли скрыть аргументы функции Python в Sphinx?

Предположим, что у меня есть следующая функция, которая документирована в стиле Numpydoc , и документация автоматически генерируется с помощью директивы autofunction Sphinx :

def foo(x, y, _hidden_argument=None): """ Foo a bar. Parameters ---------- x: str The first argument to foo. y: str The second argument to foo. Returns ------- The barred foo. """ if _hidden_argument: _end_users_shouldnt_call_this_function(x, y) return x + y 

Я не хочу рекламировать скрытый аргумент как часть моего публичного API, но он появляется в моей автоматической сгенерированной документации. Есть ли способ сказать Sphinx игнорировать конкретный аргумент функции, или (еще лучше) сделать это автоматически игнорировать аргументы с лидирующим подчеркиванием?

2 Solutions collect form web for “Можно ли скрыть аргументы функции Python в Sphinx?”

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

В этом случае вам нужно что-то вроде:

 .. autofunction:: some_module.foo(x, y) 

Это переопределит список параметров функции и спрячет нежелательный аргумент в документе.

Можно редактировать сигнатуру функции в обработчике события автоподкодирования.

Параметр signature обработчика событий содержит подпись; строка формы (parameter_1, parameter_2) . В приведенном ниже фрагменте split() используется для удаления последнего параметра функции:

 hidden = "_hidden_argument" def process_sig(app, what, name, obj, options, signature, return_annotation): if signature and hidden in signature: signature = signature.split(hidden)[0] + ")" return (signature, return_annotation) def setup(app): app.connect("autodoc-process-signature", process_sig) 

В результате документация покажет подпись функции в вопросе как foo(x, y) вместо foo(x, y, _hidden_argument=None) .

  • Sphinx, обновляя API
  • Встраивание HTML в реструктурированный текст на страницах пакета PyPi
  • Определение целей для межсинхронных ссылок на numpy, scipy и matplotlib
  • Автоматическая ошибка Python sphinx
  • RestructuredText в Sphinx и Docstrings: одиночная или двойная обратная кавычка или обратная ссылка
  • Автоматизированный способ переключения с форматирования docstring epydoc на форматирование dhstnx sphinx?
  • Как заставить Sphinx уважать импорт классов в пакет с __init__.py
  • Есть ли API для форматирования текста Sphinx?
  • Python - лучший язык программирования в мире.