构建器API¶
- class sphinx.builders.Builder[源代码]¶
这是所有构建器的基类。
它遵循以下基本工作流程:
![// UML for the standard Sphinx build workflow
digraph build {
graph [
rankdir=LR
];
node [
shape=rect
style=rounded
];
"Sphinx" [
shape=record
label = "Sphinx | <init> __init__ | <build> build"
];
"legend" [
shape=record
label = <<table border="0" cellborder="0" cellspacing="0">
<tr><td align="center"><u><b>Method types</b></u></td></tr>
<tr><td align="left"><font color="darkorange">Final</font></td></tr>
<tr><td align="left"><font color="darkblue">Overridable</font></td></tr>
<tr><td align="left"><font color="darkgreen">Abstract</font></td></tr>
</table>>
];
{rank=same; "Sphinx" "legend" };
"Builder.init" [color=darkblue];
"Builder.build_all" [color=darkorange];
"Builder.build_specific" [color=darkorange];
"Builder.build_update" [color=darkorange];
"Sphinx":init -> "Builder.init";
"Sphinx":build -> "Builder.build_all";
"Sphinx":build -> "Builder.build_specific";
"Sphinx":build -> "Builder.build_update";
"Builder.get_outdated_docs" [color=darkgreen];
"Builder.build_update" -> "Builder.get_outdated_docs";
"Builder.build" [color=darkorange];
"Builder.build_all" -> "Builder.build";
"Builder.build_specific" -> "Builder.build";
"Builder.build_update":p1 -> "Builder.build";
"Builder.read" [color=darkorange];
"Builder.write" [color=darkorange];
"Builder.finish" [color=darkblue];
"Builder.build" -> "Builder.read";
"Builder.build" -> "Builder.write";
"Builder.build" -> "Builder.finish";
"Builder.read_doc" [color=darkorange];
"Builder.write_doctree" [color=darkorange];
"Builder.read" -> "Builder.read_doc";
"Builder.read_doc" -> "Builder.write_doctree";
"Builder.prepare_writing" [color=darkblue];
"Builder.copy_assets" [color=darkblue];
"Builder.write_documents" [color=darkblue];
"Builder.write":p1 -> "Builder.prepare_writing";
"Builder.write":p1 -> "Builder.copy_assets";
"Builder.write_documents" [
shape=record
label = "<p1> Builder.write_documents | Builder._write_serial | Builder._write_parallel"
];
"Builder.write":p1 -> "Builder.write_documents";
"Builder.write_doc" [color=darkgreen];
"Builder.get_relative_uri" [color=darkblue];
"Builder.write_documents":p1 -> "Builder.write_doc";
"Builder.write_doc" -> "Builder.get_relative_uri";
"Builder.get_target_uri" [color=darkgreen];
"Builder.get_relative_uri" -> "Builder.get_target_uri";
}](../_images/graphviz-e87ab1666a7685a706a5bed2a7744d43bb33cbd4.png)
标准Sphinx生成工作流程的调用图¶
可重写的属性
这些类属性应设置在构建器(构建器)子类之上:
- format: ClassVar[str] = ''¶
构建器的输出格式,如果没有生成文档输出则为空字符串。这通常是文件扩展名,例如“html”,但接受任何字符串值。构建器的格式字符串可以被各种组件(如
SphinxPostTransform或扩展)用来确定它们与构建器的兼容性。
- allow_parallel: ClassVar[bool] = False¶
是否可以安全地进行并行
write_doc()调用。
- default_translator_class: ClassVar[type[nodes.NodeVisitor]]¶
构建器的默认转换器类。可以通过
set_translator()重写。
核心方法
这些方法定义了核心构建工作流程,不能被重写:
- final build(docnames: Iterable[str] | None, summary: str | None = None, method: Literal['all', 'specific', 'update'] = 'update') None[源代码]¶
主要的构建方法,通常由特定的
build_*方法调用。首先,更新环境,然后调用
write()。
- final read() list[str][源代码]¶
(重新)读取自上次更新以来所有新的或更改的文件。
将所有环境文档名称存储在规范格式中(即使用 SEP 作为 os.path.sep 的分隔符)。
- final write_doctree(docname: str, doctree: document, *, _cache: bool = True) None[源代码]¶
将文档树写入文件,以供重新生成时用作缓存。
- final write(build_docnames: Iterable[str] | None, updated_docnames: Iterable[str], method: Literal['all', 'specific', 'update'] = 'update') None[源代码]¶
编写特定于构建器的输出文件。
抽象方法
这些必须在构建器子类中实现:
- get_outdated_docs() str | Iterable[str][源代码]¶
返回一个过时的输出文件的迭代器,或一个描述更新生成将生成什么的字符串。
如果构建器没有输出与源文件对应的单个文件,请在此处返回一个字符串。如果是,则返回需要写入的文件的迭代器。
- write_doc(docname: str, doctree: document) None[源代码]¶
为文档编写输出文件
- 参数:
docname -- docname。
doctree -- 定义要写入的内容。
必须在此方法中确定输出文件名,通常通过调用
get_target_uri()或get_relative_uri()。
可重写的方法
这些方法可以在构建器子类中重写:
- prepare_writing(docnames: Set[str]) None[源代码]¶
在运行
write_doc()之前可以添加逻辑的地方
- get_relative_uri(from_: str, to: str, typ: str | None = None) str[源代码]¶
返回两个源文件名之间的相对URI。
- 引发:
NoUri如果没有办法返回合理的URI。
Attributes
可以从构建器实例调用的属性:
- events¶
一个
EventManager类的对象。
可重写的属性(扩展)
构建器子类可以设置这些属性以支持内置扩展: