Показать * только * docstring в документации Sphinx

Sphinx имеет функцию под названием automethod, которая извлекает документацию из метода docstring и вставляет ее в документацию. Но он не только вставляет docstring, но и подпись метода (имя + аргументы). Как вставить только docstring (исключая подпись метода)?

ref: http://sphinx.pocoo.org/ext/autodoc.html

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