Подтвердить что ты не робот

Как использовать Sphinx 'Autodoc-extension для частных методов?

Я использую Sphinx для документирования моего проекта python. У меня включено расширение autodoc и в моих документах есть следующее.

.. autoclass:: ClassName
   :members:

Проблема заключается в том, что она только документирует не частные методы в классе. Как включить частные методы?

4b9b3361

Ответ 1

если вы используете sphinx 1.1 или выше, с сайта документации sphinx по адресу http://sphinx.pocoo.org/ext/autodoc.html,

:special-members:
:private-members:

Ответ 2

Один из способов обойти это - явно заставить Сфинкса документировать частные члены. Вы можете сделать это, добавив automethod в конец документов уровня класса:

class SmokeMonster(object):
   """
   A large smoke monster that protects the island.
   """
   def __init__(self,speed):
      """
      :param speed: Velocity in MPH of the smoke monster
      :type  speed: int

      .. document private functions
      .. automethod:: _evaporate
      """
      self.speed = speed

   def _evaporate(self):
      """
      Removes the smoke monster from reality. Not to be called by client.
      """
      pass

Ответ 3

Пробовал ли вы использовать настраиваемый метод для определения того, должен ли член быть включен в документацию, используя autodoc-skip-member?

Ответ 4

Рассматривая код apidoc, мы можем изменить то, что sphinx-apidoc производит настройку переменной среды:

export SPHINX_APIDOC_OPTIONS='members,special-members,private-members,undoc-members,show-inheritance'

Вы также можете добавить эту настройку в свой файл Makefile (если ваш пакет использует его):

docs:
    rm -rf docs/api
    SPHINX_APIDOC_OPTIONS='members,special-members,private-members,undoc-members,show-inheritance' sphinx-apidoc -o docs/api/ intellprice
    $(MAKE) -C docs clean
    $(MAKE) -C docs html

Ответ 5

Нет, private означает private для класса и что он не должен использоваться из общедоступного API. Это не означает секрет, и для тех из нас, кто хочет использовать sphinx для полной документации классов, исключая частные методы, это довольно раздражает.

Предыдущий ответ правильный. Вам придется использовать настраиваемый метод, поскольку Sphinx в настоящее время не поддерживает autodoc в сочетании с частными методами.

Ответ 6

Вы можете добавить это в файл conf.py:

autodoc_default_flags = ['members', 'undoc-members', 'private-members', 'special-members', 'inherited-members', 'show-inheritance']

Ответ 7

Вот намек: представьте, что частные средства "секретны".

Вот почему Сфинкс не будет документировать их.

Если вы не имеете в виду "секрет", подумайте об изменении их имен. Избегайте использования имени однодискового подчеркивания в целом; это не поможет, если у вас нет причин держать эту секрецию в секрете.