ドメイン API¶
- class sphinx.domains.Domain(env: BuildEnvironment)[ソース]¶
ドメインとは、同様の性質を持つオブジェクトのための「オブジェクト」記述ディレクティブのグループと、それらへの参照を作成するための対応するロールを意味します。例としては、Python のモジュール、クラス、関数など、テンプレート言語の要素、Sphinx のロールとディレクティブなどが挙げられます。
各ドメインには、既存のオブジェクトに関する情報とその参照方法を self.data に個別に格納します。これは辞書でなければなりません。また、ドメインに依存しない方法でオブジェクトを参照または検索できるように、オブジェクト情報を統一的な方法で Sphinx の一部に公開するいくつかの関数を実装する必要があります。
self.data について: すべてのオブジェクトおよび相互参照情報は BuildEnvironment インスタンスに格納されるため、domain.data オブジェクトも env.domaindata 辞書にキー domain.name で格納されます。ビルドプロセスが開始する前に、すべてのアクティブなドメインがインスタンス化され、環境オブジェクトが与えられます。domaindata 辞書は、存在しないか、その 'version' キーがドメインクラスの
data_version
属性と等しい辞書である必要があります。そうでない場合、OSError が発生し、ピックル化された環境は破棄されます。- directive(name: str) Callable | None [ソース]¶
登録されたディレクティブに常にフルネーム ('domain:name') を
self.name
として与えるディレクティブアダプタークラスを返します。
- get_objects() Iterable[tuple[str, str, str, str, str, int]] [ソース]¶
「オブジェクトの説明」のイテラブルを返します。
オブジェクトの説明は、6 つの項目を持つタプルです
name
完全修飾名。
dispname
検索/リンク時に表示する名前。
type
オブジェクト型、
self.object_types
のキー。docname
オブジェクトが見つかるドキュメント。
anchor
オブジェクトのアンカー名。
priority
オブジェクトがどれほど「重要」であるか (検索結果での配置を決定します)。次のいずれか。
1
デフォルトの優先度 (フルテキスト一致の前に配置)。
0
オブジェクトは重要 (デフォルト優先度のオブジェクトの前に配置)。
2
オブジェクトは重要ではありません(全文一致の後ろに配置されます)。
-1
オブジェクトは検索に一切表示されるべきではありません。
- merge_domaindata(docnames: list[str], otherdata: dict[str, Any]) None [ソース]¶
別のドメインデータインベントリ(並列ビルドのサブプロセスから来る)から、docnamesに関するデータをマージします。
- process_doc(env: BuildEnvironment, docname: str, document: nodes.document) None [ソース]¶
環境によってドキュメントが読み込まれた後、そのドキュメントを処理します。
- process_field_xref(pnode: pending_xref) None [ソース]¶
ドキュメントフィールドで作成された保留中のxrefを処理します。たとえば、現在のスコープに関する情報を付加します。
- resolve_any_xref(env: BuildEnvironment, fromdocname: str, builder: Builder, target: str, node: pending_xref, contnode: Element) list[tuple[str, Element]] [ソース]¶
指定されたtargetを使用して、保留中のxref nodeを解決します。
この参照は、「any」または同様のロールから来ているため、型がわかりません。それ以外の場合、引数は
resolve_xref()
の場合と同じです。このメソッドは、タプル
('domain:role', newnode)
のリスト(空の可能性あり)を返す必要があります。ここで、'domain:role'
は、同じ参照を作成できたロールの名前(例:'py:func'
)です。newnode
は、resolve_xref()
が返すものです。バージョン1.3で追加。
- resolve_xref(env: BuildEnvironment, fromdocname: str, builder: Builder, typ: str, target: str, node: pending_xref, contnode: Element) Element | None [ソース]¶
指定されたtypおよびtargetを使用して、保留中のxref nodeを解決します。
このメソッドは、xrefノードを置き換える新しいノードを返し、そのノードにはクロスリファレンスのマークアップコンテンツであるcontnodeが含まれている必要があります。
解決策が見つからない場合は、Noneを返すことができます。xrefノードは、
missing-reference
イベントに渡され、解決策が得られない場合は、contnodeで置き換えられます。このメソッドは、
missing-reference
イベントの発行を抑制するために、sphinx.environment.NoUri
を発生させることもできます。
- role(name: str) RoleFunction | None [ソース]¶
常に、登録されたロールのフルネーム(「domain:name」)を最初の引数として与えるロールアダプター関数を返します。
- data_version = 0¶
データバージョン。 self.data の形式が変更されたときにこれを更新してください。
- enumerable_nodes: dict[type[Node], tuple[str, TitleGetter | None]] = {}¶
node_class -> (enum_node_type, title_getter)
- label = ''¶
ドメインラベル:より長く、より説明的な(メッセージで使用されます)
- name = ''¶
ドメイン名:短く、かつ一意である必要があります
- class sphinx.domains.ObjType(lname: str, /, *roles: Any, **attrs: Any)[ソース]¶
ObjTypeは、ドメインがドキュメント化できるオブジェクトの型の説明です。 Domainサブクラスのobject_types属性では、オブジェクト型名はこのクラスのインスタンスにマッピングされます。
コンストラクタ引数
lname: 型のローカライズされた名前(ドメイン名を含めないでください)
roles: この型のオブジェクトを参照できるすべてのロール
attrs: オブジェクト属性 – 現在「searchprio」のみが知られており、これは全文検索インデックスにおけるオブジェクトの優先度を定義します。
Domain.get_objects()
を参照してください。
- class sphinx.domains.Index(domain: Domain)[ソース]¶
Indexは、ドメイン固有のインデックスの説明です。ドメインにインデックスを追加するには、Indexをサブクラス化し、3つの名前属性をオーバーライドします。
name は、ファイル名の生成に使用される識別子です。また、インデックスのハイパーリンクターゲットにも使用されます。したがって、ユーザーは
ref
ロールと、ドメイン名とname
属性を組み合わせた文字列を使用して、インデックスページを参照できます(例::ref:`py-modindex`
)。localname は、インデックスのセクションタイトルです。
shortname は、HTML出力の関係バーで使用するためのインデックスの短い名前です。関係バーのエントリを無効にするために空にすることができます。
および
generate()
メソッドを提供します。次に、インデッククラスをドメインの indices リストに追加します。拡張機能は、add_index_to_domain()
を使用して、既存のドメインにインデックスを追加できます。バージョン 3.0 で変更: インデックスページは、
ref
ロールを介してドメイン名とインデックス名で参照できます。- abstract generate(docnames: Iterable[str] | None = None) tuple[list[tuple[str, list[IndexEntry]]], bool] [ソース]¶
インデックスのエントリを取得します。
docnames
が指定されている場合は、これらのドキュメント名を参照するエントリに制限します。戻り値は
(content, collapse)
のタプルです。collapse
サブエントリを折りたたんで開始する必要があるかどうかを決定するブール値(サブエントリの折りたたみ機能をサポートする出力形式の場合)。
content
:(letter, entries)
のタプルのシーケンス。ここで、letter
は指定されたentries
の「見出し」で、通常は開始文字です。entries
は単一エントリのシーケンスです。各エントリはIndexEntry
です。
- class sphinx.domains.IndexEntry(name: str, subtype: int, docname: str, anchor: str, extra: str, qualifier: str, descr: str)[ソース]¶
インデックスエントリ。
注釈
qualifier と description は、LaTeX などの一部の出力形式ではレンダリングされません。
- class sphinx.directives.ObjectDescription(name, arguments, options, content, lineno, content_offset, block_text, state, state_machine)[ソース]¶
クラス、関数、または同様のオブジェクトを記述するディレクティブ。直接使用されるのではなく、カスタムの動作を追加するために(ドメイン固有のディレクティブで)サブクラス化されます。
- _object_hierarchy_parts(sig_node: desc_signature) tuple[str, ...] [ソース]¶
オブジェクトの階層の各部分のエントリ(例:
('module', 'submodule', 'Class', 'method')
)を文字列のタプルで返します。返されたタプルは、目次内で親の中に子を適切にネストするために使用され、_toc_entry_name()
メソッド内でも使用できます。このメソッドは、目次生成以外では使用しないでください。
- _toc_entry_name(sig_node: desc_signature) str [ソース]¶
オブジェクトの目次エントリのテキストを返します。
この関数は、目次エントリの名前を設定するために、
run()
で一度呼び出されます(オブジェクトノードに特別な属性_toc_name
が設定され、後で目次エントリが収集されるときにenvironment.collectors.toctree.TocTreeCollector.process_doc().build_toc()
で使用されます)。オブジェクトの目次エントリをサポートするには、ドメインはこのメソッドをオーバーライドし、構成設定
toc_object_entries_show_parents
も尊重する必要があります。また、ドメインは_object_hierarchy_parts()
をオーバーライドする必要があります。オブジェクトの階層の各部分に 1 つ(文字列)のエントリを設定します。このメソッドの結果は署名ノードに設定され、このメソッド内で使用するためにsig_node['_toc_parts']
としてアクセスできます。結果のタプルは、目次内で親の中に子を適切にネストするためにも使用されます。このメソッドの実装例は、python ドメイン (
PyObject._toc_entry_name()
) 内にあります。python ドメインは、handle_signature()
メソッド内で_toc_parts
属性を設定します。
- add_target_and_index(name: ObjDescT, sig: str, signode: desc_signature) None [ソース]¶
該当する場合は、相互参照 ID とエントリを self.indexnode に追加します。
name は、
handle_signature()
が返したものです。
- get_signatures() list[str] [ソース]¶
ディレクティブ引数からドキュメント化するシグネチャを取得します。デフォルトでは、シグネチャは引数として、1行に1つずつ指定されます。
- handle_signature(sig: str, signode: desc_signature) ObjDescT [ソース]¶
シグネチャ *sig* を個々のノードに解析し、それらを *signode* に追加します。ValueError が発生した場合、解析は中止され、*sig* 全体が単一の desc_name ノードに入れられます。
戻り値は、オブジェクトを識別する値である必要があります。これは、変更されずに
add_target_and_index()
に渡され、それ以外の場合は重複をスキップするためにのみ使用されます。
- run() list[Node] [ソース]¶
ディレクティブ遭遇時に docutils によって呼び出される、メインのディレクティブエントリ関数。
このディレクティブは、簡単にサブクラス化できるように設計されているため、いくつかの追加メソッドに処理を委譲します。その内容は次のとおりです。
ドメイン固有のディレクティブとして呼び出されたかどうかを調べ、self.domain を設定します。
すべての説明を収めるための desc ノードを作成します。
標準オプション(現在は no-index)を解析します。
必要に応じて、self.indexnode としてインデックスノードを作成します。
self.handle_signature() を使用して、指定されたすべてのシグネチャ(self.get_signatures() が返すもの)を解析します。これは名前を返すか、ValueError を発生させる必要があります。
self.add_target_and_index() を使用してインデックスエントリを追加します。
コンテンツを解析し、その中のドキュメントフィールドを処理します。
- transform_content(content_node: desc_content) None [ソース]¶
ネストされた解析を通じてコンテンツを作成した後、
object-description-transform
イベントが発行される前、および情報フィールドが変換される前に呼び出されます。コンテンツを操作するために使用できます。
- final_argument_whitespace = True¶
最後の引数に空白を含めることはできますか?
- has_content = True¶
ディレクティブにコンテンツを含めることはできますか?
- option_spec: ClassVar[dict[str, Callable[[str], Any]]] = {'no-contents-entry': <function flag>, 'no-index': <function flag>, 'no-index-entry': <function flag>, 'no-typesetting': <function flag>, 'nocontentsentry': <function flag>, 'noindex': <function flag>, 'noindexentry': <function flag>}¶
オプション名とバリデーター関数のマッピング。
- optional_arguments = 0¶
必須引数の後のオプション引数の数。
- required_arguments = 1¶
必須ディレクティブ引数の数。