Sphinx Extension
================
What's more awesome than to use Gaphor diagrams directly in your `Sphinx`_ documentation.
Whether you write your docs in `reStructured Text`_ or `Markdown`_, we've got you covered.
.. tip::
Here we cover the reStructured Text syntax. If you prefer markdown, we suggest you
have a look at the `MyST-parser `_, as it
`supports Sphinx directives `_.
It requires `minimal effort to set up <#configuration>`_. Adding a diagram is as simple as:
.. code:: rst
.. diagram:: main
.. diagram:: main
:model: example
In case you use multiple Gaphor source files, you need to define a ``:model:`` attribute
and add the model names to the Sphinx configuration file (``conf.py``).
.. code:: rst
.. diagram:: main
:model: example
Diagrams can be referenced by their name, or by their fully qualified name.
.. code:: rst
.. diagram:: New model.main
`Figure`_, and `Image properties`_ can also be applied:
.. code:: rst
.. diagram:: main
:figwidth: image
:align: center
:alt: A description suitable for an example
You can also add a caption, if you want.
.. diagram:: main
:model: example
:figwidth: image
:align: center
:alt: A description suitable for an example
You can also add a caption, if you want.
Configuration
-------------
To add Gaphor diagram support to Sphinx, make sure Gaphor is listed as a dependency.
.. important::
Gaphor requires at least Python 3.9.
Secondly, add the following to your ``conf.py`` file:
Step 1: Add gaphor as extension.
.. code:: python
extensions = [
"gaphor.extensions.sphinx",
]
Step 2: Add references to models
.. code:: python
# A single model
gaphor_models = "../examples/sequence-diagram.gaphor"
# Or multiple models
gaphor_models = {
"connect": "connect.gaphor",
"example": "../examples/sequence-diagram.gaphor"
}
Now include ``diagram`` directives in your documents.
Read the Docs
~~~~~~~~~~~~~
The diagram directive plays nice with `Read the docs`_.
To make diagrams render, it's best to use a `.readthedocs.yaml`_ file in your project.
Make sure to include the extra ``apt_packages`` as shown below.
This is the ``.readthedocs.yaml`` file we use for Gaphor:
.. literalinclude :: ../.readthedocs.yaml
:language: yaml
* ``libgirepository-2.0-dev`` is required to build PyGObject.
* ``gir1.2-pango-1.0`` is required for text rendering.
.. note::
For Gaphor 2.7.0, ``gir1.2-gtk-3.0`` and ``gir1.2-gtksource-4`` are required ``apt_packages``, although we do not use the GUI.
From Gaphor 2.7.1 onwards all you need is GI-repository and Pango.
Errors
------
Errors are shown on the console when the documentation is built and in the document.
An error will appear in the documentation. Something like this:
.. error::
No diagram ‘Wrong name’ in model ‘example’ (../examples/sequence-diagram.gaphor).
.. _Sphinx: https://www.sphinx-doc.org
.. _reStructured Text: https://www.sphinx-doc.org/en/master/usage/restructuredtext/index.html
.. _Markdown: https://myst-parser.readthedocs.io
.. _Figure: https://docutils.sourceforge.io/docs/ref/rst/directives.html#figure
.. _Image properties: https://docutils.sourceforge.io/docs/ref/rst/directives.html#image
.. _Read the Docs: https://readthedocs.org
.. _.readthedocs.yaml: https://docs.readthedocs.io/en/stable/config-file/v2.html