Документирование с помощью методов Python Sphinx, которые имеют параметры по умолчанию с дозорными объектами?

Если вы хотите, чтобы люди могли называть некоторые методы, используя None вам нужно использовать объект-дозор, когда вы определяете метод.

  _sentinel = object() def foo(param1=_sentinel): ... 

Это позволит вам вызвать foo(param1=None) и иметь возможность сделать разницу между вызовом типа foo() .

Проблема в том, что когда Sphinx документирует метод, он будет писать что-то вроде

 mymodule.foo(param1=<object object at 0x108c1a520>) 

Как я могу убедить Sphinx иметь удобный для пользователей вывод для этих функций?

Обратите внимание: представьте, как выглядят документы, если у вас есть 3-4 параметра, используя подход дозорного.

Это можно обработать вручную, указав подпись функции в директиве autodoc, например:

 .. automodule:: pymorphy.contrib.tokenizers .. autofunction:: extract_tokens(foo, bar) .. autofunction:: extract_words 

Я не думаю, что можно убедить Сфинкса быть более «дружелюбным», если у вас есть дозорный элемент, который создает объект вне функции. Расширение autodoc Sphinx импортирует модуль , что означает, что выполняется код модуля.

Вы уверены, что не можете использовать что-то вроде этого?

 def foo(param1=None): if param1 == None: param1 = whatever you want... else: ... 
Interesting Posts