Sphinx имеет функцию под названием automethod
, которая извлекает документацию из метода docstring и вставляет ее в документацию. Но он не только вставляет docstring, но и подпись метода (имя + аргументы). Как вставить только docstring (исключая подпись метода)?
Показать * только * docstring в документации Sphinx
Ответ 1
Я думаю, что вы ищете:
from sphinx.ext import autodoc
class DocsonlyMethodDocumenter(autodoc.MethodDocumenter):
def format_args(self):
return None
autodoc.add_documenter(DocsonlyMethodDocumenter)
per текущие источники, это должно позволить переопределить класс, ответственный за методы документирования (более старые версии add_documenter
запрещают такие переопределения, но теперь они явно разрешены). Имея format_args
return None, конечно, является документированным способом в autodoc
, чтобы сказать: "не утруждайтесь сигнатурой".
Я думаю, что это чистый, продуманный способ выполнения этой задачи и, как таковой, предпочтительнее альтернативных альтернатив. Если вам нужно жить с некоторыми старыми версиями sphinx
, однако вам действительно может потребоваться monkeypatch (autodoc.MethodDocumenter.format_args=lambda _:None
- eek! -), хотя я бы рекомендовал обновить sphinx
до текущей версии в качестве лучшего подхода, если это вообще возможно в вашем конкретном развертывании.