このセクションで説明するマークアップはドキュメントの書かれているモジュールに対して情報を提供するものです。
それでは、モジュールのドキュメンテーションに利用できるディレクティブの説明をします:
このディレクティブはモジュールの説明の開始時に使用します。パッケージやサブモジュールにも使用できますが、この場合はパッケージ名を含む、完全な名前を指定してください。この ディレクティブは class ディレクティブのようなコンテンツを作成することはできません。
このディレクティブを使用すると、グローバルモジュールインデックスに項目が追加されます。
platform オプションが存在していれば、そのモジュールが利用可能なモジュールをカンマ区切りで指定します。もしすべてのプラットフォームで利用可能であれば、このオプションは使用しないようにしましょう。プラットフォーム名としては、短い識別子、例えば、”IRIX”, “Mac”, “Windows”, “Unix”などから利用してください。もし適用時点ですでに使用されているキーがあれば、それを使用してください。
synopsis オプションには、モジュールの目的を説明する文章を書くことができます。現在のバージョンでは、これはグローバルモジュールインデックスの中でのみ使用されます。
deprecated オプションを使用すると、このモジュールが古くて、使用するのを推奨しない、ということを示すことができます。オプションは取りません。このディレクティブは様々な場所で使用されるでしょう。
ノート
これは概要ファイルの目次のツリーに挿入されるようになります。モジュール説明ファイルのセクションタイトルの情報が増えるため、重要です。
モジュールに含まれる機能を説明するのに使用するディレクティブもいくつもあります。それぞれのディレクティブは、説明対象に関する基本情報を記述するためのシグニチャが1つ以上あります。基本バージョンは全体インデックスにエントリーを追加します。インデックスのエントリーに追加する必要がなければ :noindex: フラグをディレクティブのオプションすれば回避することができます。以下の例はこのディレクティブのすべての機能を表すサンプルです:
.. function:: spam(eggs)
ham(eggs)
:noindex:
説明..
ディレクティブには以下のものがあります。
Cの関数の説明に使用します。シグニチャはC言語内で書かれる様に記述します。例えば以下のように書きます:
.. cfunction:: PyObject* PyType_GenericAlloc(PyTypeObject *type, Py_ssize_t nitems)
これは、関数のようなプリプロセッサマクロにも使用することができます。引き数名も書く必要があります。説明の中で使用されることもあります。
シグネチャ内のアスタリスクはバックスラッシュでエスケープする必要はありません。この中はreSTの行内のテキスト処理のパーサは実行されず、専用のパーサで処理されます。
Cの構造体メンバーの説明をします。以下のように記述します:
.. cmember:: PyObject* PyTypeObject.tp_bases
説明のテキストには受け入れ可能な値の範囲、値がどのように解釈されるべきか、値が変更可能かどうかという情報を入れるべきです。関数のメンバーへの参照をテキストの中で書きたい場合には、 member ロールを使用すべきです。
モジュールレベル関数の説明です。シグニチャはパラメータを含めます。オプションのパラメータに対してはカッコでくくります。分かりやすさを上げる目的でデフォルト値を入れることもできます。 シグニチャ の説明も参照してください。例:
.. function:: Timer.repeat([repeat=3[, number=1000000]])
オブジェクトのメソッドはこのディレクティブではドキュメントを記述することはできません。モジュールの名前空間にあり、モジュールの公開インタフェースとして作成されているメソッドに限って使用することができます。これらは通常の関数とほぼ同じようにしようできます。
説明にはパラメータに必要な関する情報と、それらがどのように使用されるのか(変更可能なオブジェクトが渡されたときに、変更されるのかどうか)、副作用、投げられる可能性のある例外の情報を含まなければなりません。小さいサンプルが提供されるでしょう。
クラスについて説明します。シグニチャにはコンストラクタ引数になるパラメータも含めることができます。 シグニチャ も参照してください。
このクラスに属する属性とメソッドのディレクティブはこのディレクティブの本体の中に記述します。このクラスの外に書いた場合は、提供された名前にクラス名が含まれていれば、クロスリファレンスは動作します。サンプル:
.. class:: Foo
.. method:: quux()
-- あるいは --
.. class:: Bar
.. method:: Bar.quux()
最初の書き方が推奨です。
バージョン 0.4 で追加: 標準のreSTのディレクティブの class は、現在のSphinxでは cssclass という名前で提供されています。
関数やメソッド、クラスのコンストラクタのシグニチャは、オプションパラメータにカッコを使うのを除いて、Pythonで書くように記述することができます:
.. function:: compile(source[, filename[, symbol]])
このような省略可能な引数を表す場合には、慣習的にカンマの前に開きカッコを置きます。省略できる引数が二つ以上ある場合には、カッコを入れ子にするスタイルと、フラットにするスタイルの両方があります。このような場合にはほとんどの場合、オプションの引数は個別に与えることができます。
- compile(source[, filename, symbol])¶
オプション引数のデフォルト値を与えることもできます。ただし、値にカンマが含まれると、シグニチャのパーサはうまく動作しません。Pythonの3つのスタイルの引数のアノテーションと同様に、返り値の型も記述することができます。
- compile(source : string[, filename, symbol]) → ast object
バージョン 0.4 で追加.
オブジェクト説明のためのディレクティブの内側には、適切に情報が明示されたreSTフィールドを配置することができます。
フィールドは、 return, rtype 以外の場合は、上記のキーワードのうち、どれかと、引数を一つが引数として設定されています。 return, rtype だけは引数を取りません。サンプルを見ていただくのが一番でしょう:
.. function:: format_exception(etype, value, tb[, limit=None])
トレースバック付きで、例外を人の読める形式にフォーマットします。
:param etype: 例外のタイプ
:param value: 例外オブジェクト
:param tb: トレースバックオブジェクト
:param limit: 表示するスタックフレームの数の最大数
:type limit: 数値 or None
:rtype: 文字列のリスト
これは以下のようにレンダリングされます:
- format_exception(etype, value, tb[, limit=None])
トレースバック付きで、例外を人の読める形式にフォーマットします。
パラメタ:
- etype – 例外のタイプ
- value – 例外オブジェクト
- tb – トレースバックオブジェクト
- limit (数値 or None) – 表示するスタックフレームの数の最大数
戻り値の型: 文字列のリスト
コマンドラインのプログラムの説明を行うためのディレクティブについて紹介します:
コマンドラインオプション、もしくはスイッチについて説明をします。オプションの引き数名は不等号でくくる必要があります:
.. cmdoption:: -m <モジュール>, --module <モジュール>
モジュールをスクリプトとみなして実行します
このディレクティブは 最初 のオプションを名前付きのターゲットとみなして、クロスリファレンスを作成します。これは option にて参照可能です。このサンプルの場合は、 :option:`-m` という形式でリンクを張ることができます。
currentmodule と同様に、このディレクティブ何も出力しません。その代わりにこのディレクティブを定義すると、Sphinxはこの後に定義される cmdoption ディレクティブが説明するオプションが、ここで指定された 名前 を持つプログラムに属するということを認識できるようになります。
program を使用する場合には、 option ロールとプログラム名を適合させる必要があります。以下のような状況について見てみます:
.. program:: rm
.. cmdoption:: -r
再帰的に動作するようになります
.. program:: svn
.. cmdoption:: -r revision
作業中のワークに対してリビジョンを設定します
この場合、 option`rm -r` 最初のオプションを示し、 option:`svn -r` は2番目のオプションを示します。
プログラム名はスペースを含むこともできます。そのため、 svn add や、 svn commit などのサブコマンドを個別に取り扱いたい、というケースにも対応できます。
バージョン 0.5 で追加.
汎用的なバージョンのディレクティブも存在します:
このディレクティブは上記で説明してきたようなディレクティブを使ったのと、同じ形式にフォーマットされたテキストを生成します。その代わり、インデックスのエントリーや、クロスリファレンスのターゲットは作成されません。これを使用するケースとしては、 ちょうどこのドキュメントで行っているように( ソースコードを表示 を参照)、ディレクティブ自身の説明を行いたい場合などに使用します:
.. describe:: opcode
Pythonバイトコードの命令を説明します
拡張機能を使うと、このようなディレクティブを追加できます。詳しくは、 add_description_unit() メソッドのドキュメントをご覧ください。