Skip to main content

Rendering Diagrams in Sphinx

Project description

sphinx-diagrams

This is a rough (incomplete, but working) Sphinx extension for Diagrams. Please refer to the open issue for Sphinx support for the latest up-to-date version when officially supported.

Usage

Install

$ pip3 install sphinx-diagrams

Adding the extension

conf.py

extensions = [
    "sphinx_diagrams",
]

Adding the diagram (inline)

The simplest way is to use SphinxDiagram and inline the code in your document. Consider using an external diagram/python script (see below) as it has much shorter iteration loop than running sphinx and most likely better supported by your editor or IDE.

source/index.rst

Diagram - Deployment
====================

.. diagrams::
  from diagrams import Cluster
  from diagrams.k8s.compute import Deployment
  from sphinx_diagrams import SphinxDiagram

  with SphinxDiagram(title="GKE"):
      with Cluster("GCP Project"):
          KubernetesEngine("Primary Cluster")

Adding a diagram (external python code)

Write the code

source/diagrams_infrastructure.py

You can still use SphinxDiagram in your own code. This class handles arguments like :filename: and visibility (showing the diagram via xdg-open/open) for you.

from diagrams import Cluster
from diagrams.k8s.compute import Deployment
from sphinx_diagrams import SphinxDiagram

with SphinxDiagram(title="GKE"):
    with Cluster("GCP Project"):
        KubernetesEngine("Primary Cluster")

Alternatively, you can use Diagram (from diagrams) directly. Note that the extension will pass two arguments to your diagram script. The first one is the filename as sys.argv[1] it expects (it needs to match the one outputted by diagrams) and the value false as sys.argv[2]. The later can be used to tell your script not to show (open) the generate diagram.

import sys

from diagrams import Diagram, Cluster
from diagrams.gcp.compute import KubernetesEngine

with Diagram("GKE", filename=sys.argv[1], show=sys.argv[2].lower() == 'true'):
    with Cluster("GCP Project"):
        KubernetesEngine("Primary Cluster")

Referencing the diagram

source/index.rst

Diagram - Deployment
====================

.. diagrams:: diagrams_infrastructure.py
  :filename: diagram-deployment.png

If using SphinxDiagram (above) or if the filename of the diagram script is the same as the output file (e.g.: diagrams_infrastructure.py => diagrams_infrastructure.png) then the :filename: is not necessary.

Diagram - Deployment
====================

.. diagrams:: diagrams_infrastructure.py

Credit

This code is based on sphinx.graphviz.

SPDX-License-Identifier: BSD-2-Clause

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sphinx-diagrams-0.4.0.tar.gz (5.9 kB view details)

Uploaded Source

Built Distribution

sphinx_diagrams-0.4.0-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file sphinx-diagrams-0.4.0.tar.gz.

File metadata

  • Download URL: sphinx-diagrams-0.4.0.tar.gz
  • Upload date:
  • Size: 5.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.3 CPython/2.7.17 Darwin/20.6.0

File hashes

Hashes for sphinx-diagrams-0.4.0.tar.gz
Algorithm Hash digest
SHA256 3cf2e0179bdd9ccdb28164fcfcae9b167999a1abe40e159e0c26a225490074d1
MD5 2648d3510aa1c9c3c53299b9b1075c82
BLAKE2b-256 6841e5e874e12f09ea002eee1498cab5fccfd9c6a3348cd3bba82819310d8335

See more details on using hashes here.

File details

Details for the file sphinx_diagrams-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: sphinx_diagrams-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.1.3 CPython/2.7.17 Darwin/20.6.0

File hashes

Hashes for sphinx_diagrams-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4860291cb04d6361f898d20ba28dca7345f757cdc240caf144c8bf20c73067a0
MD5 d3cf1c7c9842a4723c891a443fcc0589
BLAKE2b-256 8ea322ae4cac618ed0b8d5447dcb67e833bd27a37c958be0540cce5fd34f42e2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page