构建器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: str = ''¶
生成器的输出格式,或者如果没有生成文档输出,则为“”。这通常是文件扩展名,例如“html”,但任何字符串值都可以接受。构建器的格式字符串可以由各种组件使用,例如
SphinxPostTransform或扩展来确定其与构建器的兼容性。
- allow_parallel: bool = False¶
平行是否安全
write_doc()电话
- default_translator_class: 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 write_doctree(docname: str, doctree: document, *, _cache: bool = True) None[源代码]¶
将doctree写入文件,供重新构建时用作缓存。
- 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。
属性
可从构建器实例调用的属性:
- events¶
一个
EventManager对象。
可覆盖属性(扩展)
生成器子类可以设置这些属性来支持内置扩展: