переменные сфинкса и свойства класса в автомодуле - PullRequest
2 голосов
/ 16 марта 2011

Мне интересно, почему я не могу видеть свойства класса при использовании директивы автомодуля в sphinx ...

, даже если у свойств есть строка документации

То же самое с параметрами Django CONSTANTS, онине показано.

Я использую:

.. automodule:: settings
   :members:
   :show-inheritance:
   :undoc-members:

Я разделяю настройки на модуль

настройки

  • __ init__.py
  • instal_apps.py
  • locale.py
  • db.py
  • cache.py
  • stage_stable.py
  • stage_test.py
  • stage_dev.py
  • ...
  • templates.py

и в __init__.py я импортирую все издругие файлы и выберите, на каком этапе я

, он работает с django, упрощает изменение настроек и ... не работает с sphinx: {

1 Ответ

4 голосов
/ 16 марта 2011

строки документов обычно не применяются к свойствам класса, но расширение Autodoc для Sphinx может, если вы поместите его после поля.Вы также можете использовать этот специальный синтаксис перед полем:

#: Documentation for my_field.  You can
#: use one or more lines as well.
my_field = "something"

Другие вещи, которые нужно проверить, это то, что у вас есть расширение autodoc, указанное в файле conf.py.Ищите extensions = ["sphinx.ext.autodoc"].(Список может содержать более одного расширения.)

[edit:] У меня ранее был комментарий к документации в неправильном месте.В отличие от строки документации, комментарии #: должны идти перед полем, которое вы комментируете.

[править:] Поскольку вышеизложенное не является проблемой, здесь есть еще одна возможность.Модуль или пакет, который вы используете после .. automodule::, должен быть доступен для вашей документации.Это означает, что вам нужно убедиться, что вы добавили его местоположение в путь Python.Мой проект настроен так:

my_project/
    package/
        __init__.py
        ...
    doc/
        build/
            ...
        source/
            conf.py
            ...

В этом случае мне нужно было добавить /my_package к пути Python, чтобы я мог получить доступ к package.Для этого я убедился, что это было в верхней части моего conf.py:

import sys, os   # I believe conf.py already imports sys,
import os.path   # os, and os.path.  But just in case, I
                 # list it here.

sys.path.insert(0, os.path.abspath(os.path.join('..','..')))

Это эффективно добавляет ./../.. к пути Python, который из conf.py в моем примере является my_project каталог.(Я также определяю его как абсолютный путь, чтобы было меньше возможностей для сюрпризов.) Очевидно, вам придется изменить это для вашего конкретного случая.

Надеюсь, это поможет вам.

...