sphinx/doc/extdev/builderapi.rst

92 lines
2.4 KiB
ReStructuredText

.. _writing-builders:
Builder API
===========
.. currentmodule:: sphinx.builders
.. class:: Builder
This is the base class for all builders.
It follows this basic workflow:
.. graphviz:: /_static/diagrams/sphinx_build_flow.dot
:caption: Call graph for the standard Sphinx build workflow
.. rubric:: Overridable Attributes
These attributes should be set on builder sub-classes:
.. autoattribute:: name
.. autoattribute:: format
.. autoattribute:: epilog
.. autoattribute:: allow_parallel
.. autoattribute:: supported_image_types
.. autoattribute:: supported_remote_images
.. autoattribute:: supported_data_uri_images
.. autoattribute:: default_translator_class
.. rubric:: Core Methods
These methods are predefined and should generally not be overridden,
since they form the core of the build process:
.. automethod:: build_all
.. automethod:: build_specific
.. automethod:: build_update
.. automethod:: build
.. automethod:: read
.. automethod:: read_doc
.. automethod:: write_doctree
.. automethod:: write
.. rubric:: Abstract Methods
These must be implemented in builder sub-classes:
.. automethod:: get_outdated_docs
.. automethod:: write_doc
.. automethod:: get_target_uri
.. rubric:: Overridable Methods
These methods can be overridden in builder sub-classes:
.. automethod:: init
.. automethod:: write_documents
.. automethod:: prepare_writing
.. automethod:: copy_assets
.. automethod:: get_relative_uri
.. automethod:: finish
.. rubric:: Attributes
Attributes that are callable from the builder instance:
.. attribute:: events
An :class:`.EventManager` object.
.. rubric:: Overridable Attributes (extensions)
Builder sub-classes can set these attributes to support built-in extensions:
.. attribute:: supported_linkcode
By default, the :mod:`linkcode <sphinx.ext.linkcode>` extension will
only inject references for an ``html`` builder.
The ``supported_linkcode`` attribute can be defined in a non-HTML builder
to support managing references generated by linkcode.
The expected value for this attribute is an expression
which is compatible with :rst:dir:`only`.
For example, if a builder was named ``custom-builder``,
the following can be used:
.. code-block:: python
class CustomBuilder(Builder):
supported_linkcode = 'custom-builder'
...