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";
}

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 SphinxPostTransform ou 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() ou get_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:

NoUri se 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 linkcode injetará apenas referências para um construtor html. O atributo de classe supported_linkcode pode 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 com only.

Por exemplo, se um construtor foi nomeado custom-builder, o seguinte pode ser usado:

class CustomBuilder(Builder):
    supported_linkcode = 'custom-builder'
    ...