API de construtor¶
- class sphinx.builders.Builder[código-fonte]¶
Esta é a classe base para todos os construtores.
Ela segue este fluxo de trabalho básico:
![// 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)
Grafo de chamadas para o fluxo de trabalho padrão de construção do Sphinx¶
Atributos substituíveis
Estes atributos de classe devem ser definidos em subclasses de construtor:
- name: ClassVar[str] = ''¶
O nome do construtor. Este é o valor usado para selecionar construtores na linha de comando.
- format: ClassVar[str] = ''¶
O formato de saída do construtor, ou ‘’ se nenhuma saída de documento for produzida. Esta é geralmente a extensão do arquivo, por exemplo, “html”, embora qualquer valor de string seja aceito. A string de formato do construtor pode ser usada por vários componentes, como
SphinxPostTransformou extensões para determinar sua compatibilidade com o construtor.
- epilog: ClassVar[str] = ''¶
A mensagem emitida após a conclusão bem-sucedida da construção. Esta pode ser uma string de modelo no estilo printf com as seguintes chaves:
outdir,project
- allow_parallel: ClassVar[bool] = False¶
Se é seguro fazer chamadas paralelas de
write_doc().
- supported_image_types: ClassVar[list[str]] = []¶
A lista de tipos MIME de formatos de imagem suportados pelo construtor. Os arquivos de imagem são pesquisados na ordem em que aparecem aqui.
- supported_remote_images: ClassVar[bool] = False¶
O construtor pode produzir documentos de saída que podem buscar imagens externas quando abertos.
- supported_data_uri_images: ClassVar[bool] = False¶
O formato de arquivo produzido pelo construtor permite que imagens sejam incorporadas usando URIs de dados.
- default_translator_class: ClassVar[type[nodes.NodeVisitor]]¶
Classe tradutora padrão para o construtor. Isso pode ser substituído por
set_translator().
Métodos principais
Estes métodos definem o fluxo principal de construção e devem ser substituídos:
- final build_all() None[código-fonte]¶
Constrói todos os arquivos fonte.
- final build_specific(filenames: Sequence[Path]) None[código-fonte]¶
Reconstrói apenas o necessário para alterações nos filename.
- final build_update() None[código-fonte]¶
Reconstrói apenas o que foi alterado ou adicionado desde a última construção.
- final build(docnames: Iterable[str] | None, summary: str | None = None, method: Literal['all', 'specific', 'update'] = 'update') None[código-fonte]¶
Método de construção principal, geralmente chamado por um método
build_*específico.Primeiro atualiza o ambiente e depois chama
write().
- final read() list[str][código-fonte]¶
(Re-)lê todos os arquivos novos ou alterados desde a última atualização.
Armazena todos os docnames do ambiente no formato canônico (ou seja, usando SEP como separador no lugar de os.path.sep).
- final read_doc(docname: str, *, _cache: bool = True) None[código-fonte]¶
Analisa um arquivo e adiciona/atualiza entradas de inventário para a doctree.
- final write_doctree(docname: str, doctree: document, *, _cache: bool = True) None[código-fonte]¶
Escreve a doctree em um arquivo, para ser usado como cache nas reconstruções.
- final write(build_docnames: Iterable[str] | None, updated_docnames: Iterable[str], method: Literal['all', 'specific', 'update'] = 'update') None[código-fonte]¶
Escreve arquivos de saída específicos do construtor.
Métodos abstratos
Estes devem ser implementados em subclasses de construtor:
- get_outdated_docs() str | Iterable[str][código-fonte]¶
Retorna um iterável de arquivos de saída desatualizados ou uma string descrevendo o que uma construção de atualização construir.
Se o construtor não gerar arquivos individuais correspondentes aos arquivos fonte, retorna uma string aqui. Em caso afirmativo, retorna um iterável dos arquivos que precisam ser escritos.
- write_doc(docname: str, doctree: document) None[código-fonte]¶
Escreve o arquivo de saída para o documento
- Parâmetros:
docname – o docname.
doctree – define o conteúdo a ser escrito.
O nome do arquivo de saída deve ser determinado dentro deste método, normalmente chamando
get_target_uri()ouget_relative_uri().
- get_target_uri(docname: str, typ: str | None = None) str[código-fonte]¶
Retorna o URI alvo para um nome do documento.
typ pode ser usado para qualificar a característica do link para construtores individuais.
Métodos substituíveis
Esses métodos podem ser substituídos nas subclasses do construtor:
- init() None[código-fonte]¶
Carrega os modelos necessários e executa a inicialização. A implementação padrão não faz nada.
- write_documents(docnames: Set[str]) None[código-fonte]¶
Escreve todos documentos em docnames.
Este método pode ser substituído se um construtor não cria arquivos de saída para cada documento.
- prepare_writing(docnames: Set[str]) None[código-fonte]¶
Um lugar onde você pode adicionar lógica antes de
write_doc()ser executado
- copy_assets() None[código-fonte]¶
Para onde os ativos (imagens, arquivos estáticos, etc) são copiados antes da escrita
- get_relative_uri(from_: str, to: str, typ: str | None = None) str[código-fonte]¶
Retorna um URI relativo entre dois nomes de arquivos fonte.
- levanta:
NoUrise não houver como retornar um URI sensato.
- finish() None[código-fonte]¶
Conclui o processo de construção.
A implementação padrão não faz nada.
Atributos
Atributos que são chamáveis a partir da instância do construtor:
- events¶
Um objeto
EventManager.
Atributos substituíveis (extensões)
As subclasses de Builder podem definir esses atributos para oferecer suporte a extensões embutidas:
- supported_linkcode: str¶
Por padrão, a extensão
linkcodeinjetará apenas referências para um construtorhtml. O atributo de classesupported_linkcodepode ser definido em um construtor não HTML para dar suporte ao gerenciamento de referências geradas pelo linkcode. O valor esperado para esse atributo é uma expressão compatível comonly.Por exemplo, se um construtor foi nomeado
custom-builder, o seguinte pode ser usado:class CustomBuilder(Builder): supported_linkcode = 'custom-builder' ...