2016-04-02 30 views
5

私はPythonクラスのドキュメントをSphinx 1.4とsphinx-apidocsphinx.ext.autodocという拡張子を使って生成しようとしています。'autodoc_default_flags'はPythonのSphinx設定でどのように機能しますか?

私はたくさんのモジュールを持っていますが、それぞれクラス名を表示するだけですが、クラス内のメソッドの完全なリスト(コード内にdocstringがあります)は表示しません。ここで

は私conf.pyファイルの抜粋です:

sys.path.insert(0, '/blah/sphinx/src') 

extensions = ['sphinx.ext.autodoc'] 
autodoc_member_order = 'bysource' 
autodoc_default_flags = ['no-members'] 

ここで私はスフィンクスがどのように機能するかを理解するために使用していることをおもちゃのモジュール(my_module.py)です:

""" 
============== 
Test my module 
============== 
""" 

def module_function(): 
    """Here is a module function, let's see if it's in""" 
    print 'module level' 

class TestClass: 
    """ 
    Test this class 

    Here is some more class documentation. 
    """ 
    def __init__(self): 
     """Here is init""" 
     self.test = True 

    def getName(self, inputName): 
     """Summary for getName 

     more documentation for getName 
     """  
     print "hello" 
     return inputName 

私はよ私が紛失しているdoc-stringで何かする必要がある場合に備えて、このクラスのコードを表示するだけです。

は私が最初のファイルを生成するために、スフィンクス-apidocを実行します。

スフィンクス-apidoc -f -M -e -oドキュメント/ /何とか/スフィンクス/ SRC/

[ビルド:

私は autodoc_default_flagsがやるべきかについては明らかではないかもしれません

メイクHTML

。私は、あなたがsphinx-apidocを設定したsphinx-apidocを実行すると、それらのフラグが.rstファイルの指令に適用されたと考えました。しかし、私はスフィンクス-apidocを実行した後、私はこの.rstファイルを取得:

my_module module 
===================== 

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

を私は:members:が原因それらのフラグを設定することに適用されると予想していないだろうが、そこにそれがあります!そして、htmlページにはdocstringsと一緒に完全にメソッドがあります。

FWIW、autodoc_member_orderが動作しています。私はメソッドが表示される順序を切り替えるように設定できます。

だから私の質問:

  1. autodoc_default_flagsは、私が説明したものを行うことになっているか、私はそれを誤解していますか?
  2. ビルドから自動的にメンバーを隠すために使用できるのであれば、正しく使用していますか?もしそうなら、なぜ私がまだ:members:を.rstファイルに追加しているのかについての考えはありますか?
  3. 私がそれを誤解している場合、それは本当に何をしていますか?そして、私のビルドからメソッドdocstringを自動的に隠すことができますか?

は、理想的には私はscipyのダウンロードのようなものがここで例えば、持っていたい:私はナポレオンとsphinx.ext.autosummary拡張子で遊んだことについては

http://docs.scipy.org/doc/scipy/reference/cluster.hierarchy.html

が、それはapidocように思えますクラスメソッドのドキュメントを隠すことができるはずです。

答えて

8

私はあなたが設定され、それらのフラグでスフィンクス-apidocを実行したときに、それらのフラグが.rstファイル内のディレクティブに適用されたことを考えました。

sphinx-buildフラグは* .rstファイルで上書きされない限り、conf.pyにautodoc_default_flagsを適用しません。

sphinx-apidocは、conf.pyを使用しません。


SPHINX_APIDOC_OPTIONS環境変数を経由してスフィンクス-apidocによって生成された* .rstファイル(これはSphinxのドキュメントで説明されていない)のフラグをカスタマイズすることも可能です。例:あなたが生成された出力をより詳細に制御する必要がある場合、あなたはおそらくapidoc.pyモジュールの独自のバージョンを書くことができ

.. automodule:: my_module 
    :no-members: 

$ export SPHINX_APIDOC_OPTIONS=no-members 
$ sphinx-apidoc -o docs/ /blah/sphinx/src/ 

これは次のようになりautomoduleディレクティブになります。 Customize templates for `sphinx-apidoc`を参照してください。

+0

これはうまくいきました。うん、SPHINX_APIDOC_OPTIONS変数について知っているといいだろう。私は次にテンプレートを調べます。私はこのような簡単な答えを得るために素晴らしいので、カップルの日にこれに対して頭を叩いていた。 –

+0

私は助けることができてうれしい! – mzjn

+0

チップをありがとう - 悲しいことに、これは引数付きの '' automodule''ディレクティブをカバーしません - https://github.com/sphinx-doc/sphinx/issues/4057 – peterjc

関連する問題