Pythonで5,000以上のラインプロジェクトを文書化するためにSphinxを使用しようとしています。約7つの基本モジュールがあります。私の知る限り、autodocを使用するには、プロジェクトの各ファイルに対して次のようなコードを記述する必要があります。
.. automodule:: mods.set.tests
:members:
:show-inheritance:
私は多くのファイルを持っているので、これはあまりにも退屈です。 「mods」パッケージをドキュメント化することを指定できると、はるかに簡単になります。その後、Sphinxはパッケージを再帰的に処理し、各サブモジュールのページを作成できます。
このような機能はありますか?そうでない場合は、すべての.rstファイルを作成するスクリプトを作成できますが、それには多くの時間がかかります。
Sphinxに元の質問が行われたときに autosummary
拡張子があったかどうかはわかりませんが、今のところ、sphinx-apidoc
などを使用せずにその種の自動生成を設定することはかなり可能ですスクリプト。以下に、私のプロジェクトの1つで機能する設定があります。
conf.py
ファイルでautosummary
拡張機能(およびautodoc
)を有効にし、autosummary_generate
オプションをTrue
に設定します。カスタム*.rst
テンプレートを使用していない場合、これで十分かもしれません。それ以外の場合、テンプレートディレクトリを除外リストに追加します。そうしないと、autosummary
がテンプレートを入力ファイルとして扱います(これはバグのようです)。
extensions = ['sphinx.ext.autodoc', 'sphinx.ext.autosummary']
autosummary_generate = True
templates_path = [ '_templates' ]
exclude_patterns = ['_build', '_templates']
autosummary::
ファイルのTOCツリーでindex.rst
を使用します。この例では、モジュールproject.module1
およびproject.module2
のドキュメントが自動的に生成され、_autosummary
ディレクトリに配置されます。
PROJECT
=======
.. toctree::
.. autosummary::
:toctree: _autosummary
project.module1
project.module2
デフォルトでは、autosummary
はモジュールとその機能の非常に短い要約のみを生成します。これを変更するには、カスタムテンプレートファイルを_templates/autosummary/module.rst
( Jinja2 で解析されます)に入れることができます:
{{ fullname }}
{{ underline }}
.. automodule:: {{ fullname }}
:members:
結論として、_autosummary
ディレクトリをバージョン管理下に置く必要はありません。また、任意の名前を付けてソースツリーの任意の場所に配置することもできます(ただし、_build
の下に置くと機能しません)。
各パッケージでは、__init__.py
ファイルには.. automodule:: package.module
パッケージの各部分のコンポーネント。
その後、.. automodule:: package
そして、それはほとんどあなたが望むことをします。