From 0a7c062ec3456a2e27cdce82b2177018df659fd6 Mon Sep 17 00:00:00 2001
From: Brent Huisman <brenthuisman@users.noreply.github.com>
Date: Tue, 18 May 2021 09:51:46 +0200
Subject: [PATCH] Docs markup improvements (#1483)

* Adapt CSS for the HTML5 transition in docutils 0.17
* Fix some reST markup errors
* Add meta-tag to enable indexation control at Google (current indexation appears at least a year old).
---
 doc/concepts/decor.rst                        |  4 +-
 doc/concepts/domdec.rst                       |  4 +-
 doc/concepts/morphology.rst                   | 12 +--
 doc/concepts/recipe.rst                       | 82 ++++++++---------
 doc/concepts/simulation.rst                   | 18 ++--
 doc/fileformat/asc.rst                        | 12 ++-
 doc/fileformat/cable_cell.rst                 |  9 +-
 doc/fileformat/index.rst                      | 22 +++++
 doc/fileformat/neuroml.rst                    |  5 ++
 doc/fileformat/nmodl.rst                      |  7 +-
 doc/fileformat/swc.rst                        |  5 ++
 doc/index.rst                                 |  3 +
 doc/python/domdec.rst                         | 16 ++--
 doc/python/hardware.rst                       |  8 +-
 doc/python/simulation.rst                     | 89 ++++++++++---------
 doc/python/single_cell_model.rst              | 38 ++++----
 doc/requirements.txt                          |  1 +
 .../divio_docs_theme/static/css/divio.css     | 89 ++++++++++---------
 18 files changed, 234 insertions(+), 190 deletions(-)
 create mode 100644 doc/fileformat/index.rst

diff --git a/doc/concepts/decor.rst b/doc/concepts/decor.rst
index 9b29d0eb..ad4b7b78 100644
--- a/doc/concepts/decor.rst
+++ b/doc/concepts/decor.rst
@@ -28,8 +28,8 @@ The choice of region or locset is reflected in the two broad classes of dynamics
 
 Decorations are described by a **decor** object in Arbor. It provides facilities for
 
-  * setting properties defined over the whole cell;
-  * descriptions of dynamics applied to regions and locsets.
+* setting properties defined over the whole cell;
+* descriptions of dynamics applied to regions and locsets.
 
 .. _cablecell-paint:
 
diff --git a/doc/concepts/domdec.rst b/doc/concepts/domdec.rst
index 137b502d..a95fe65c 100644
--- a/doc/concepts/domdec.rst
+++ b/doc/concepts/domdec.rst
@@ -6,8 +6,8 @@ Domain decomposition
 A *domain decomposition* describes the distribution of the model over the available computational resources.
 The description partitions the cells in the model as follows:
 
-    * group the cells into cell groups of the same :ref:`kind <modelcellkind>` of cell;
-    * assign each cell group to either a CPU core or GPU on a specific MPI rank.
+* group the cells into cell groups of the same :ref:`kind <modelcellkind>` of cell;
+* assign each cell group to either a CPU core or GPU on a specific MPI rank.
 
 The number of cells in each cell group depends on different factors, including the type of the cell, and whether the
 cell group will run on a CPU core or the GPU. The domain decomposition is solely responsible for describing the distribution
diff --git a/doc/concepts/morphology.rst b/doc/concepts/morphology.rst
index 8af3f9a2..055978e6 100644
--- a/doc/concepts/morphology.rst
+++ b/doc/concepts/morphology.rst
@@ -607,17 +607,7 @@ because it has two children: the dendrites attached to its distal end.
 Supported file formats
 ----------------------
 
-Arbor supports morphologies described using the SWC file format and the NeuroML file format.
-
-SWC
-~~~
-
-See :ref:`formatswc`
-
-NeuroML
-~~~~~~~
-
-See :ref:`formatneuroml`
+See the supported :ref:`file formats <format-overview>`.
 
 .. _morph-cv-policies:
 
diff --git a/doc/concepts/recipe.rst b/doc/concepts/recipe.rst
index ae64d334..58158066 100644
--- a/doc/concepts/recipe.rst
+++ b/doc/concepts/recipe.rst
@@ -6,16 +6,16 @@ Recipes
 An Arbor *recipe* is a description of a model. The recipe is queried during the model
 building phase to provide information about individual cells in the model, such as:
 
-  * The **number of cells** in the model.
-  * The **kind** of each cell.
-  * The **description** of each cell, e.g. with morphology, dynamics, synapses, detectors,
-    stimuli etc.
-  * The number of **spike targets** on each cell.
-  * The number of **spike sources** on each cell.
-  * The number of **gap junction sites** on each cell.
-  * Incoming **network connections** from other cells terminating on a cell.
-  * **Gap junction connections** on each cell.
-  * **Probes** on each cell.
+* The **number of cells** in the model.
+* The **kind** of each cell.
+* The **description** of each cell, e.g. with morphology, dynamics, synapses, detectors,
+  stimuli etc.
+* The number of **spike targets** on each cell.
+* The number of **spike sources** on each cell.
+* The number of **gap junction sites** on each cell.
+* Incoming **network connections** from other cells terminating on a cell.
+* **Gap junction connections** on each cell.
+* **Probes** on each cell.
 
 Recipes are structured to provide a consistent interface for describing each cell in the
 network using their global identifier (`gid`).
@@ -26,31 +26,31 @@ which helps make Arbor fast and easily distributable over many nodes.
 To better illustrate the content of a recipe, let's consider the following network of
 three cells:
 
--  | ``Cell 0``: Is a single soma, with ``hh`` (Hodgkin-huxley) dynamics. In the middle
-     of the soma, a spike detector is attached, it generates a spiking event when the
-     voltage goes above 10 mV. In the same spot on the soma, a current clamp is also
-     attached, with the intention of triggering some spikes. All of the preceding info:
-     the morphology, dynamics, spike detector and current clamp are what is referred to in
-     Arbor as the **description** of the cell.
-   | ``Cell 0`` should be modelled as a :ref:`cable cell<modelcablecell>`,
-     (because cable cells allow complex dynamics such as ``hh``). This is referred to as
-     the **kind** of the cell.
-   | It's quite expensive to build cable cells, so we don't want to do this too often.
-     But when the simulation is first set up, it needs to know how cells interact with
-     one another in order to distribute the simulation over the available computational
-     resources. This is why the number of **targets**, **sources** and **gap junction sites**
-     is needed separately from the cell description: with them, the simulation can tell
-     that ``cell 0`` has 1 **spike source** (the detector), 0 **spike targets**, and 0
-     **gap junction sites**, without having to build the cell.
--  | ``Cell 1``: Is a soma and a single dendrite, with ``passive`` dynamics everywhere.
-     It has a single synapse at the end of the dendrite and a gap junction site in the
-     middle of the soma. This is the **description** of the cell.
-     It's also a cable cell, which is its **cell kind**. It has 0 **spike sources**, 1
-     **spike target** (the synapse) and 1 **gap junction site**.
--  | ``Cell 2``: Is a soma and a single dendrite, with ``passive`` dynamics everywhere.
-     It has a gap junction site in the middle of the soma. This is the **description**
-     of the cell. It's also a cable cell, which is its **cell kind**. It has 0
-     **spike sources**, 0 **spike targets** and 1 **gap junction site**.
+- ``Cell 0``: Is a single soma, with ``hh`` (Hodgkin-huxley) dynamics. In the middle
+  of the soma, a spike detector is attached, it generates a spiking event when the
+  voltage goes above 10 mV. In the same spot on the soma, a current clamp is also
+  attached, with the intention of triggering some spikes. All of the preceding info:
+  the morphology, dynamics, spike detector and current clamp are what is referred to in
+  Arbor as the **description** of the cell.
+  ``Cell 0`` should be modelled as a :ref:`cable cell<modelcablecell>`,
+  (because cable cells allow complex dynamics such as ``hh``). This is referred to as
+  the **kind** of the cell.
+  It's quite expensive to build cable cells, so we don't want to do this too often.
+  But when the simulation is first set up, it needs to know how cells interact with
+  one another in order to distribute the simulation over the available computational
+  resources. This is why the number of **targets**, **sources** and **gap junction sites**
+  is needed separately from the cell description: with them, the simulation can tell
+  that ``cell 0`` has 1 **spike source** (the detector), 0 **spike targets**, and 0
+  **gap junction sites**, without having to build the cell.
+- ``Cell 1``: Is a soma and a single dendrite, with ``passive`` dynamics everywhere.
+  It has a single synapse at the end of the dendrite and a gap junction site in the
+  middle of the soma. This is the **description** of the cell.
+  It's also a cable cell, which is its **cell kind**. It has 0 **spike sources**, 1
+  **spike target** (the synapse) and 1 **gap junction site**.
+- ``Cell 2``: Is a soma and a single dendrite, with ``passive`` dynamics everywhere.
+  It has a gap junction site in the middle of the soma. This is the **description**
+  of the cell. It's also a cable cell, which is its **cell kind**. It has 0
+  **spike sources**, 0 **spike targets** and 1 **gap junction site**.
 
 The total **number of cells** in the model is 3. The **kind**, **description** and
 number of **spike sources**, **spike targets** and **gap junction sites** on each cell
@@ -89,10 +89,10 @@ Why recipes?
 
 The interface and design of Arbor recipes was motivated by the following aims:
 
-    * Building a simulation from a recipe description must be possible in a
-      distributed system efficiently with minimal communication.
-    * Minimising the amount of memory used in model building, making it
-      possible to build and run simulations in one run.
+* Building a simulation from a recipe description must be possible in a
+  distributed system efficiently with minimal communication.
+* Minimising the amount of memory used in model building, making it
+  possible to build and run simulations in one run.
 
 Recipe descriptions are cell-oriented, in order that the building phase can
 be efficiently distributed and that the model can be built independently of any
@@ -153,8 +153,8 @@ General best practices
     information only when requested.
     This has multiple benefits, including:
 
-        * thread safety;
-        * minimising the memory footprint of the recipe.
+    * thread safety;
+    * minimising the memory footprint of the recipe.
 
 .. topic:: Be reproducible
 
diff --git a/doc/concepts/simulation.rst b/doc/concepts/simulation.rst
index 81a28eb9..2a63cc69 100644
--- a/doc/concepts/simulation.rst
+++ b/doc/concepts/simulation.rst
@@ -11,21 +11,21 @@ From recipe to simulation
 
 To build a simulation the following are needed:
 
-    * A :ref:`recipe <modelrecipe>` that describes the cells and connections in the model.
-    * A :ref:`domain decomposition <modeldomdec>` that describes the distribution of the
-      model over the local and distributed :ref:`hardware resources <modelhardware>`.
-    * An :ref:`execution context <modelcontext>` used to execute the simulation.
+* A :ref:`recipe <modelrecipe>` that describes the cells and connections in the model.
+* A :ref:`domain decomposition <modeldomdec>` that describes the distribution of the
+  model over the local and distributed :ref:`hardware resources <modelhardware>`.
+* An :ref:`execution context <modelcontext>` used to execute the simulation.
 
 Simulation execution and interaction
 ------------------------------------
 
 Simulations provide an interface for executing and interacting with the model:
 
-    * The simulation is executed/*run* by advancing the model state from the current simulation time to another
-      with maximum time step size.
-    * The model state can be *reset* to its initial state before the simulation was started.
-    * *Sampling* of the simulation state can be performed during execution with samplers and probes
-      and spike output with the total number of spikes generated since either construction or reset.
+* The simulation is executed/*run* by advancing the model state from the current simulation time to another
+  with maximum time step size.
+* The model state can be *reset* to its initial state before the simulation was started.
+* *Sampling* of the simulation state can be performed during execution with samplers and probes
+  and spike output with the total number of spikes generated since either construction or reset.
 
 API
 ---
diff --git a/doc/fileformat/asc.rst b/doc/fileformat/asc.rst
index 0fb79f35..81e7faaa 100644
--- a/doc/fileformat/asc.rst
+++ b/doc/fileformat/asc.rst
@@ -1,11 +1,15 @@
 .. _formatasc:
 
-Neurlucida ASCII format
-~~~~~~~~~~~~~~~~~~~~~~~
+Neurolucida ASCII
+~~~~~~~~~~~~~~~~~
+
+.. csv-table::
+   :header: "Name", "File extension", "Read", "Write"
+
+   "Neurolucida", "``asc``", "✓", "✗"
 
 Arbor has support for reading cable cell morphologies described using the
-`Neurlucida ASCII file format <https://www.mbfbioscience.com/help/pdf/NL9.pdf>`_
-or ``.asc`` file format.
+`Neurolucida ASCII file format <https://www.mbfbioscience.com/help/pdf/NL9.pdf>`_.
 
 Because ASCII files contain both a morphology description and meta data, the
 loader returns both a morphology, and a label dictionary that describes regions
diff --git a/doc/fileformat/cable_cell.rst b/doc/fileformat/cable_cell.rst
index 8bb9f1ff..17f56450 100644
--- a/doc/fileformat/cable_cell.rst
+++ b/doc/fileformat/cable_cell.rst
@@ -1,7 +1,12 @@
 .. _formatcablecell:
 
-Arbor Cable Cell format (ACC)
-=============================
+Arbor Cable Cell
+================
+
+.. csv-table::
+   :header: "Name", "File extension", "Read", "Write"
+
+   "Arbor Cable Cell", "``acc``", "✓", "✓"
 
 We define an s-expression format for describing :ref:`cable cells <cablecell>`.
 Cable cells are constructed from three components: a :ref:`label dictionary <labels>`,
diff --git a/doc/fileformat/index.rst b/doc/fileformat/index.rst
new file mode 100644
index 00000000..0fa07bd3
--- /dev/null
+++ b/doc/fileformat/index.rst
@@ -0,0 +1,22 @@
+.. _format-overview:
+
+File formats
+============
+
+.. csv-table::
+   :header: "Name", "File extension", "Read", "Write"
+
+   "Arbor Cable Cell", "``acc``", "✓", "✓"
+   "SWC", "``swc``", "✓", "✗"
+   "NMODL", "``mod``", "✓", "✗"
+   "NeuroML2", "``nml``", "✓", "✗"
+   "Neurolucida", "``asc``", "✓", "✗"
+
+.. toctree::
+   :maxdepth: 2
+
+   cable_cell
+   asc
+   neuroml
+   nmodl
+   swc
diff --git a/doc/fileformat/neuroml.rst b/doc/fileformat/neuroml.rst
index 7ae99f6d..ba91b3f9 100644
--- a/doc/fileformat/neuroml.rst
+++ b/doc/fileformat/neuroml.rst
@@ -3,6 +3,11 @@
 NeuroML2
 --------
 
+.. csv-table::
+   :header: "Name", "File extension", "Read", "Write"
+
+   "NeuroML2", "``nml``", "✓", "✗"
+
 Arbor offers limited support for models described in `NeuroML version 2 <https://neuroml.org/neuromlv2>`_.
 This is not built by default (see :ref:`NeuroML support <install-neuroml>` for instructions on how
 to build Arbor with NeuroML).
diff --git a/doc/fileformat/nmodl.rst b/doc/fileformat/nmodl.rst
index 5bc538da..fc40a000 100644
--- a/doc/fileformat/nmodl.rst
+++ b/doc/fileformat/nmodl.rst
@@ -1,7 +1,12 @@
 .. _formatnmodl:
 
 NMODL
-======
+=====
+
+.. csv-table::
+   :header: "Name", "File extension", "Read", "Write"
+
+   "NMODL", "``mod``", "✓", "✗"
 
 *NMODL* is a `DSL <https://www.neuron.yale.edu/neuron/static/py_doc/modelspec/programmatic/mechanisms/nmodl.html>`_
 for describing ion channel and synapse dynamics that is used by NEURON,
diff --git a/doc/fileformat/swc.rst b/doc/fileformat/swc.rst
index 65b19ade..cfc9c34b 100644
--- a/doc/fileformat/swc.rst
+++ b/doc/fileformat/swc.rst
@@ -3,6 +3,11 @@
 SWC
 ~~~
 
+.. csv-table::
+   :header: "Name", "File extension", "Read", "Write"
+
+   "SWC", "``swc``", "✓", "✗"
+
 Arbor supports reading morphologies described using the
 `SWC <http://www.neuronland.org/NLMorphologyConverter/MorphologyFormats/SWC/Spec.html>`_ file format.
 
diff --git a/doc/index.rst b/doc/index.rst
index 37d5b085..6c113c14 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -162,3 +162,6 @@ A full list of our software attributions can be found `here <https://github.com/
    contrib/doc
    contrib/example
    contrib/test
+
+.. meta::
+   :google-site-verification: KbkW8d9MLsBFZz8Ry0tfcQRkHsgxzkECCahcyRSjWDo
diff --git a/doc/python/domdec.rst b/doc/python/domdec.rst
index 1ac9ea1c..8b9e03e3 100644
--- a/doc/python/domdec.rst
+++ b/doc/python/domdec.rst
@@ -163,18 +163,18 @@ Therefore, the following data structures are used to describe domain decompositi
 
     Return the indexes of a set of cells of the same kind that are grouped together in a cell group in an :class:`arbor.simulation`.
 
-        .. function:: group_description(kind, gids, backend)
+    .. function:: group_description(kind, gids, backend)
 
-            Construct a group description with parameters :attr:`kind`, :attr:`gids` and :attr:`backend`.
+        Construct a group description with parameters :attr:`kind`, :attr:`gids` and :attr:`backend`.
 
-        .. attribute:: kind
+    .. attribute:: kind
 
-            The kind of cell in the group.
+        The kind of cell in the group.
 
-        .. attribute:: gids
+    .. attribute:: gids
 
-            The list of gids of the cells in the cell group.
+        The list of gids of the cells in the cell group.
 
-        .. attribute:: backend
+    .. attribute:: backend
 
-            The hardware :class:`backend` on which the cell group will run.
+        The hardware :class:`backend` on which the cell group will run.
diff --git a/doc/python/hardware.rst b/doc/python/hardware.rst
index 78e2fb02..f1d02880 100644
--- a/doc/python/hardware.rst
+++ b/doc/python/hardware.rst
@@ -19,10 +19,10 @@ Helper functions for checking cmake or environment variables, as well as configu
 
     Returns a dictionary to check which options the Arbor library was configured with at compile time:
 
-      * ``ARB_MPI_ENABLED``
-      * ``ARB_WITH_MPI4PY``
-      * ``ARB_GPU_ENABLED``
-      * ``ARB_VERSION``
+    * ``ARB_MPI_ENABLED``
+    * ``ARB_WITH_MPI4PY``
+    * ``ARB_GPU_ENABLED``
+    * ``ARB_VERSION``
 
     .. container:: example-code
 
diff --git a/doc/python/simulation.rst b/doc/python/simulation.rst
index f00b22b4..dcfc769c 100644
--- a/doc/python/simulation.rst
+++ b/doc/python/simulation.rst
@@ -8,8 +8,8 @@ From recipe to simulation
 
 To build a simulation the following concepts are needed:
 
-    * an :py:class:`arbor.recipe` that describes the cells and connections in the model;
-    * an :py:class:`arbor.context` used to execute the simulation.
+* an :py:class:`arbor.recipe` that describes the cells and connections in the model;
+* an :py:class:`arbor.context` used to execute the simulation.
 
 The workflow to build a simulation is to first generate an
 :class:`arbor.domain_decomposition` based on the :py:class:`arbor.recipe` and :py:class:`arbor.context` describing the distribution of the model
@@ -50,16 +50,16 @@ over the local and distributed hardware resources (see :ref:`pydomdec`). Then, t
 
     The **constructor** takes
 
-        * an :py:class:`arbor.recipe` that describes the model;
-        * an :py:class:`arbor.domain_decomposition` that describes how the cells in the model are assigned to hardware resources;
-        * an :py:class:`arbor.context` which is used to execute the simulation.
+    * an :py:class:`arbor.recipe` that describes the model;
+    * an :py:class:`arbor.domain_decomposition` that describes how the cells in the model are assigned to hardware resources;
+    * an :py:class:`arbor.context` which is used to execute the simulation.
 
     Simulations provide an interface for executing and interacting with the model:
 
-        * Specify what data (spikes, probe results) to record.
-        * **Advance the model state** by running the simulation up to some time point.
-        * Retrieve recorded data.
-        * Reset simulator state back to initial conditions.
+    * Specify what data (spikes, probe results) to record.
+    * **Advance the model state** by running the simulation up to some time point.
+    * Retrieve recorded data.
+    * Reset simulator state back to initial conditions.
 
     **Constructor:**
 
@@ -286,60 +286,61 @@ Definitions
 Procedure
 *********
 
-    There are three parts to the process of recording cell data over a simulation.
+There are three parts to the process of recording cell data over a simulation.
 
-    1. Describing what to measure.
+1. Describing what to measure.
 
-       The recipe object must provide a method :py:func:`recipe.get_probes` that returns a list of
-       probe addresses for the cell with a given ``gid``. The kth element of the list corresponds
-       to the :term:`probe id` ``(gid, k)``.
+   The recipe object must provide a method :py:func:`recipe.get_probes` that returns a list of
+   probe addresses for the cell with a given ``gid``. The kth element of the list corresponds
+   to the :term:`probe id` ``(gid, k)``.
 
-       Each probe address is an opaque object describing what to measure and where, and each cell kind
-       will have its own set of functions for generating valid address specifications. Possible cable
-       cell probes are described in the cable cell documentation: :ref:`pycablecell-probesample`.
+   Each probe address is an opaque object describing what to measure and where, and each cell kind
+   will have its own set of functions for generating valid address specifications. Possible cable
+   cell probes are described in the cable cell documentation: :ref:`pycablecell-probesample`.
 
-    2. Instructing the simulator to record data.
+2. Instructing the simulator to record data.
 
-       Recording is set up with the method :py:func:`simulation.sample`
-       as described above. It returns a handle that is used to retrieve the recorded data after
-       simulation.
+   Recording is set up with the method :py:func:`simulation.sample`
+   as described above. It returns a handle that is used to retrieve the recorded data after
+   simulation.
 
-    3. Retrieve recorded data.
+3. Retrieve recorded data.
 
-       The method :py:func:`simulation.samples` takes a handle and returns the recorded data as a list,
-       with one entry for each probe associated with the :term:`probe id` that was used in step 2 above. Each
-       entry will be a tuple ``(data, meta)`` where ``meta`` is the metadata associated with the
-       probe, and ``data`` contains all the data sampled on that probe over the course of the
-       simulation.
+   The method :py:func:`simulation.samples` takes a handle and returns the recorded data as a list,
+   with one entry for each probe associated with the :term:`probe id` that was used in step 2 above. Each
+   entry will be a tuple ``(data, meta)`` where ``meta`` is the metadata associated with the
+   probe, and ``data`` contains all the data sampled on that probe over the course of the
+   simulation.
 
-       The contents of ``data`` will depend upon the specifics of the probe, but note:
+   The contents of ``data`` will depend upon the specifics of the probe, but note:
 
-       i. The object type and structure of ``data`` is fully determined by the metadata.
+   i. The object type and structure of ``data`` is fully determined by the metadata.
 
-       ii. All currently implemented probes return data that is a NumPy array, with one
-           row per sample, first column being sample time, and the remaining columns containing
-           the corresponding data.
+   ii. All currently implemented probes return data that is a NumPy array, with one
+       row per sample, first column being sample time, and the remaining columns containing
+       the corresponding data.
 
-.. container:: example-code
+Example
+*******
 
-    .. code-block:: python
+.. code-block:: python
 
-        import arbor
+    import arbor
 
-        # [... define recipe, decomposition, context ... ]
-        # Initialize simulation:
+    # [... define recipe, decomposition, context ... ]
+    # Initialize simulation:
 
-        sim = arbor.simulation(recipe, decomp, context)
+    sim = arbor.simulation(recipe, decomp, context)
 
-        # Sample probe id (0, 0) (first probe id on cell 0) every 0.1 ms with exact sample timing:
+    # Sample probe id (0, 0) (first probe id on cell 0) every 0.1 ms with exact sample timing:
 
-        handle = sim.sample((0, 0), arbor.regular_schedule(0.1), arbor.sampling_policy.exact)
+    handle = sim.sample((0, 0), arbor.regular_schedule(0.1), arbor.sampling_policy.exact)
 
-        # Run simulation and retrieve sample data from the first probe associated with the handle.
+    # Run simulation and retrieve sample data from the first probe associated with the handle.
 
-        sim.run(tfinal=3, dt=0.1)
-        data, meta = sim.samples(handle)[0]
-        print(data)
+    sim.run(tfinal=3, dt=0.1)
+    data, meta = sim.samples(handle)[0]
+    print(data)
 
 >>> [[  0.         -50.        ]
 >>>  [  0.1        -55.14412111]
diff --git a/doc/python/single_cell_model.rst b/doc/python/single_cell_model.rst
index 2b395d4b..e194a16e 100644
--- a/doc/python/single_cell_model.rst
+++ b/doc/python/single_cell_model.rst
@@ -14,39 +14,39 @@ Single cell model
    cable cells.
    The simulation can not be distributed over several machines.
 
-    .. method:: single_cell_model(cable_cell)
+   .. method:: single_cell_model(cable_cell)
 
-       Construct a :class:`single_cell_model` from a :class:`cable_cell`
+      Construct a :class:`single_cell_model` from a :class:`cable_cell`
 
-    .. method:: run(tfinal, dt)
+   .. method:: run(tfinal, dt)
 
-       Run the model from time t= ``0`` to t= ``tflinal`` with a dt= ``dt``.
+      Run the model from time t= ``0`` to t= ``tflinal`` with a dt= ``dt``.
 
-    .. method:: probe(what, where, frequency)
+   .. method:: probe(what, where, frequency)
 
-       Sample a variable on the cell:
+      Sample a variable on the cell:
 
-       :param what: Name of the variable to record (currently only 'voltage').
-       :param where: :class:`location` at which to sample the variable.
-       :param frequency: The frequency at which to sample [kHz].
+      :param what: Name of the variable to record (currently only 'voltage').
+      :param where: :class:`location` at which to sample the variable.
+      :param frequency: The frequency at which to sample [kHz].
 
-    .. method:: spikes()
+   .. method:: spikes()
 
-       Returns a list spike times [ms] after a call to :class:`single_cell_model.run`.
+      Returns a list spike times [ms] after a call to :class:`single_cell_model.run`.
 
-    .. method:: traces()
+   .. method:: traces()
 
-       Returns a list of :class:`trace` after a call to  :class:`single_cell_model.run`.
-       Each element in the list holds the trace of one of the probes added via
-       :class:`single_cell_model.probe`.
+      Returns a list of :class:`trace` after a call to  :class:`single_cell_model.run`.
+      Each element in the list holds the trace of one of the probes added via
+      :class:`single_cell_model.probe`.
 
-    .. attribute:: properties
+   .. attribute:: properties
 
-       The :class:`cable_global_properties` of the model.
+      The :class:`cable_global_properties` of the model.
 
-    .. attribute:: catalogue
+   .. attribute:: catalogue
 
-       The :class:`mechanism_catalogue` of the model.
+      The :class:`mechanism_catalogue` of the model.
 
 .. py:class:: trace
 
diff --git a/doc/requirements.txt b/doc/requirements.txt
index 7eb5a6f2..77030e7a 100644
--- a/doc/requirements.txt
+++ b/doc/requirements.txt
@@ -1,2 +1,3 @@
 sphinx>=2.4.0
 svgwrite
+docutils >= 0.17
diff --git a/doc/scripts/divio_docs_theme/static/css/divio.css b/doc/scripts/divio_docs_theme/static/css/divio.css
index 20d9f535..1e4562d3 100644
--- a/doc/scripts/divio_docs_theme/static/css/divio.css
+++ b/doc/scripts/divio_docs_theme/static/css/divio.css
@@ -250,13 +250,13 @@ big, small {
     max-width: 100% !important; }
   @page {
     margin: 0.5cm; }
-  p, h2, .rst-content .toctree-wrapper p.caption, h3 {
+  p, h2, .rst-content .toctree-wrapper caption, h3 {
     orphans: 3;
     widows: 3; }
-  h2, .rst-content .toctree-wrapper p.caption, h3 {
+  h2, .rst-content .toctree-wrapper caption, h3 {
     page-break-after: avoid; } }
 
-.fa:before, .wy-menu-vertical li span.toctree-expand:before, .wy-menu-vertical li.on a span.toctree-expand:before, .wy-menu-vertical li.current > a span.toctree-expand:before, .rst-content .admonition-title:before, .rst-content h1 .headerlink:before, .rst-content h2 .headerlink:before, .rst-content h3 .headerlink:before, .rst-content h4 .headerlink:before, .rst-content h5 .headerlink:before, .rst-content h6 .headerlink:before, .rst-content dl dt .headerlink:before, .rst-content p.caption .headerlink:before, .rst-content tt.download span:first-child:before, .rst-content code.download span:first-child:before, .icon:before, .wy-dropdown .caret:before, .wy-inline-validate.wy-inline-validate-success .wy-input-context:before, .wy-inline-validate.wy-inline-validate-danger .wy-input-context:before, .wy-inline-validate.wy-inline-validate-warning .wy-input-context:before, .wy-inline-validate.wy-inline-validate-info .wy-input-context:before, .wy-alert, .rst-content .note, .rst-content .attention, .rst-content .caution, .rst-content .danger, .rst-content .error, .rst-content .hint, .rst-content .important, .rst-content .tip, .rst-content .warning, .rst-content .seealso, .rst-content .admonition-todo, .rst-content .admonition, .btn, input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="date"], input[type="month"], input[type="time"], input[type="datetime"], input[type="datetime-local"], input[type="week"], input[type="number"], input[type="search"], input[type="tel"], input[type="color"], select, textarea, .wy-menu-vertical li.on a, .wy-menu-vertical li.current > a, .wy-side-nav-search > a, .wy-side-nav-search .wy-dropdown > a, .wy-nav-top a {
+.fa:before, .wy-menu-vertical li span.toctree-expand:before, .wy-menu-vertical li.on a span.toctree-expand:before, .wy-menu-vertical li.current > a span.toctree-expand:before, .rst-content .admonition-title:before, .rst-content h1 .headerlink:before, .rst-content h2 .headerlink:before, .rst-content h3 .headerlink:before, .rst-content h4 .headerlink:before, .rst-content h5 .headerlink:before, .rst-content h6 .headerlink:before, .rst-content dl dt .headerlink:before, .rst-content caption .headerlink:before, .rst-content tt.download span:first-child:before, .rst-content code.download span:first-child:before, .icon:before, .wy-dropdown .caret:before, .wy-inline-validate.wy-inline-validate-success .wy-input-context:before, .wy-inline-validate.wy-inline-validate-danger .wy-input-context:before, .wy-inline-validate.wy-inline-validate-warning .wy-input-context:before, .wy-inline-validate.wy-inline-validate-info .wy-input-context:before, .wy-alert, .rst-content .note, .rst-content .attention, .rst-content .caution, .rst-content .danger, .rst-content .error, .rst-content .hint, .rst-content .important, .rst-content .tip, .rst-content .warning, .rst-content .seealso, .rst-content .admonition-todo, .rst-content .admonition, .btn, input[type="text"], input[type="password"], input[type="email"], input[type="url"], input[type="date"], input[type="month"], input[type="time"], input[type="datetime"], input[type="datetime-local"], input[type="week"], input[type="number"], input[type="search"], input[type="tel"], input[type="color"], select, textarea, .wy-menu-vertical li.on a, .wy-menu-vertical li.current > a, .wy-side-nav-search > a, .wy-side-nav-search .wy-dropdown > a, .wy-nav-top a {
   -webkit-font-smoothing: antialiased; }
 
 .clearfix {
@@ -281,7 +281,7 @@ big, small {
   font-weight: normal;
   font-style: normal; }
 
-.fa, .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.current > a span.toctree-expand, .rst-content .admonition-title, .rst-content h1 .headerlink, .rst-content h2 .headerlink, .rst-content h3 .headerlink, .rst-content h4 .headerlink, .rst-content h5 .headerlink, .rst-content h6 .headerlink, .rst-content dl dt .headerlink, .rst-content p.caption .headerlink, .rst-content tt.download span:first-child, .rst-content code.download span:first-child, .icon {
+.fa, .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.current > a span.toctree-expand, .rst-content .admonition-title, .rst-content h1 .headerlink, .rst-content h2 .headerlink, .rst-content h3 .headerlink, .rst-content h4 .headerlink, .rst-content h5 .headerlink, .rst-content h6 .headerlink, .rst-content dl dt .headerlink, .rst-content caption .headerlink, .rst-content tt.download span:first-child, .rst-content code.download span:first-child, .icon {
   display: inline-block;
   font: normal normal normal 14px/1 FontAwesome;
   font-size: inherit;
@@ -340,10 +340,10 @@ big, small {
 .fa-pull-right {
   float: right; }
 
-.fa.fa-pull-left, .wy-menu-vertical li span.fa-pull-left.toctree-expand, .wy-menu-vertical li.on a span.fa-pull-left.toctree-expand, .wy-menu-vertical li.current > a span.fa-pull-left.toctree-expand, .rst-content .fa-pull-left.admonition-title, .rst-content h1 .fa-pull-left.headerlink, .rst-content h2 .fa-pull-left.headerlink, .rst-content h3 .fa-pull-left.headerlink, .rst-content h4 .fa-pull-left.headerlink, .rst-content h5 .fa-pull-left.headerlink, .rst-content h6 .fa-pull-left.headerlink, .rst-content dl dt .fa-pull-left.headerlink, .rst-content p.caption .fa-pull-left.headerlink, .rst-content tt.download span.fa-pull-left:first-child, .rst-content code.download span.fa-pull-left:first-child, .fa-pull-left.icon {
+.fa.fa-pull-left, .wy-menu-vertical li span.fa-pull-left.toctree-expand, .wy-menu-vertical li.on a span.fa-pull-left.toctree-expand, .wy-menu-vertical li.current > a span.fa-pull-left.toctree-expand, .rst-content .fa-pull-left.admonition-title, .rst-content h1 .fa-pull-left.headerlink, .rst-content h2 .fa-pull-left.headerlink, .rst-content h3 .fa-pull-left.headerlink, .rst-content h4 .fa-pull-left.headerlink, .rst-content h5 .fa-pull-left.headerlink, .rst-content h6 .fa-pull-left.headerlink, .rst-content dl dt .fa-pull-left.headerlink, .rst-content caption .fa-pull-left.headerlink, .rst-content tt.download span.fa-pull-left:first-child, .rst-content code.download span.fa-pull-left:first-child, .fa-pull-left.icon {
   margin-right: .3em; }
 
-.fa.fa-pull-right, .wy-menu-vertical li span.fa-pull-right.toctree-expand, .wy-menu-vertical li.on a span.fa-pull-right.toctree-expand, .wy-menu-vertical li.current > a span.fa-pull-right.toctree-expand, .rst-content .fa-pull-right.admonition-title, .rst-content h1 .fa-pull-right.headerlink, .rst-content h2 .fa-pull-right.headerlink, .rst-content h3 .fa-pull-right.headerlink, .rst-content h4 .fa-pull-right.headerlink, .rst-content h5 .fa-pull-right.headerlink, .rst-content h6 .fa-pull-right.headerlink, .rst-content dl dt .fa-pull-right.headerlink, .rst-content p.caption .fa-pull-right.headerlink, .rst-content tt.download span.fa-pull-right:first-child, .rst-content code.download span.fa-pull-right:first-child, .fa-pull-right.icon {
+.fa.fa-pull-right, .wy-menu-vertical li span.fa-pull-right.toctree-expand, .wy-menu-vertical li.on a span.fa-pull-right.toctree-expand, .wy-menu-vertical li.current > a span.fa-pull-right.toctree-expand, .rst-content .fa-pull-right.admonition-title, .rst-content h1 .fa-pull-right.headerlink, .rst-content h2 .fa-pull-right.headerlink, .rst-content h3 .fa-pull-right.headerlink, .rst-content h4 .fa-pull-right.headerlink, .rst-content h5 .fa-pull-right.headerlink, .rst-content h6 .fa-pull-right.headerlink, .rst-content dl dt .fa-pull-right.headerlink, .rst-content caption .fa-pull-right.headerlink, .rst-content tt.download span.fa-pull-right:first-child, .rst-content code.download span.fa-pull-right:first-child, .fa-pull-right.icon {
   margin-left: .3em; }
 
 /* Deprecated as of 4.4.0 */
@@ -353,10 +353,10 @@ big, small {
 .pull-left {
   float: left; }
 
-.fa.pull-left, .wy-menu-vertical li span.pull-left.toctree-expand, .wy-menu-vertical li.on a span.pull-left.toctree-expand, .wy-menu-vertical li.current > a span.pull-left.toctree-expand, .rst-content .pull-left.admonition-title, .rst-content h1 .pull-left.headerlink, .rst-content h2 .pull-left.headerlink, .rst-content h3 .pull-left.headerlink, .rst-content h4 .pull-left.headerlink, .rst-content h5 .pull-left.headerlink, .rst-content h6 .pull-left.headerlink, .rst-content dl dt .pull-left.headerlink, .rst-content p.caption .pull-left.headerlink, .rst-content tt.download span.pull-left:first-child, .rst-content code.download span.pull-left:first-child, .pull-left.icon {
+.fa.pull-left, .wy-menu-vertical li span.pull-left.toctree-expand, .wy-menu-vertical li.on a span.pull-left.toctree-expand, .wy-menu-vertical li.current > a span.pull-left.toctree-expand, .rst-content .pull-left.admonition-title, .rst-content h1 .pull-left.headerlink, .rst-content h2 .pull-left.headerlink, .rst-content h3 .pull-left.headerlink, .rst-content h4 .pull-left.headerlink, .rst-content h5 .pull-left.headerlink, .rst-content h6 .pull-left.headerlink, .rst-content dl dt .pull-left.headerlink, .rst-content caption .pull-left.headerlink, .rst-content tt.download span.pull-left:first-child, .rst-content code.download span.pull-left:first-child, .pull-left.icon {
   margin-right: .3em; }
 
-.fa.pull-right, .wy-menu-vertical li span.pull-right.toctree-expand, .wy-menu-vertical li.on a span.pull-right.toctree-expand, .wy-menu-vertical li.current > a span.pull-right.toctree-expand, .rst-content .pull-right.admonition-title, .rst-content h1 .pull-right.headerlink, .rst-content h2 .pull-right.headerlink, .rst-content h3 .pull-right.headerlink, .rst-content h4 .pull-right.headerlink, .rst-content h5 .pull-right.headerlink, .rst-content h6 .pull-right.headerlink, .rst-content dl dt .pull-right.headerlink, .rst-content p.caption .pull-right.headerlink, .rst-content tt.download span.pull-right:first-child, .rst-content code.download span.pull-right:first-child, .pull-right.icon {
+.fa.pull-right, .wy-menu-vertical li span.pull-right.toctree-expand, .wy-menu-vertical li.on a span.pull-right.toctree-expand, .wy-menu-vertical li.current > a span.pull-right.toctree-expand, .rst-content .pull-right.admonition-title, .rst-content h1 .pull-right.headerlink, .rst-content h2 .pull-right.headerlink, .rst-content h3 .pull-right.headerlink, .rst-content h4 .pull-right.headerlink, .rst-content h5 .pull-right.headerlink, .rst-content h6 .pull-right.headerlink, .rst-content dl dt .pull-right.headerlink, .rst-content caption .pull-right.headerlink, .rst-content tt.download span.pull-right:first-child, .rst-content code.download span.pull-right:first-child, .pull-right.icon {
   margin-left: .3em; }
 
 .fa-spin {
@@ -2603,10 +2603,10 @@ big, small {
   overflow: visible;
   clip: auto; }
 
-.fa, .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.current > a span.toctree-expand, .rst-content .admonition-title, .rst-content h1 .headerlink, .rst-content h2 .headerlink, .rst-content h3 .headerlink, .rst-content h4 .headerlink, .rst-content h5 .headerlink, .rst-content h6 .headerlink, .rst-content dl dt .headerlink, .rst-content p.caption .headerlink, .rst-content tt.download span:first-child, .rst-content code.download span:first-child, .icon, .wy-dropdown .caret, .wy-inline-validate.wy-inline-validate-success .wy-input-context, .wy-inline-validate.wy-inline-validate-danger .wy-input-context, .wy-inline-validate.wy-inline-validate-warning .wy-input-context, .wy-inline-validate.wy-inline-validate-info .wy-input-context {
+.fa, .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.current > a span.toctree-expand, .rst-content .admonition-title, .rst-content h1 .headerlink, .rst-content h2 .headerlink, .rst-content h3 .headerlink, .rst-content h4 .headerlink, .rst-content h5 .headerlink, .rst-content h6 .headerlink, .rst-content dl dt .headerlink, .rst-content caption .headerlink, .rst-content tt.download span:first-child, .rst-content code.download span:first-child, .icon, .wy-dropdown .caret, .wy-inline-validate.wy-inline-validate-success .wy-input-context, .wy-inline-validate.wy-inline-validate-danger .wy-input-context, .wy-inline-validate.wy-inline-validate-warning .wy-input-context, .wy-inline-validate.wy-inline-validate-info .wy-input-context {
   font-family: inherit; }
 
-.fa:before, .wy-menu-vertical li span.toctree-expand:before, .wy-menu-vertical li.on a span.toctree-expand:before, .wy-menu-vertical li.current > a span.toctree-expand:before, .rst-content .admonition-title:before, .rst-content h1 .headerlink:before, .rst-content h2 .headerlink:before, .rst-content h3 .headerlink:before, .rst-content h4 .headerlink:before, .rst-content h5 .headerlink:before, .rst-content h6 .headerlink:before, .rst-content dl dt .headerlink:before, .rst-content p.caption .headerlink:before, .rst-content tt.download span:first-child:before, .rst-content code.download span:first-child:before, .icon:before, .wy-dropdown .caret:before, .wy-inline-validate.wy-inline-validate-success .wy-input-context:before, .wy-inline-validate.wy-inline-validate-danger .wy-input-context:before, .wy-inline-validate.wy-inline-validate-warning .wy-input-context:before, .wy-inline-validate.wy-inline-validate-info .wy-input-context:before {
+.fa:before, .wy-menu-vertical li span.toctree-expand:before, .wy-menu-vertical li.on a span.toctree-expand:before, .wy-menu-vertical li.current > a span.toctree-expand:before, .rst-content .admonition-title:before, .rst-content h1 .headerlink:before, .rst-content h2 .headerlink:before, .rst-content h3 .headerlink:before, .rst-content h4 .headerlink:before, .rst-content h5 .headerlink:before, .rst-content h6 .headerlink:before, .rst-content dl dt .headerlink:before, .rst-content caption .headerlink:before, .rst-content tt.download span:first-child:before, .rst-content code.download span:first-child:before, .icon:before, .wy-dropdown .caret:before, .wy-inline-validate.wy-inline-validate-success .wy-input-context:before, .wy-inline-validate.wy-inline-validate-danger .wy-input-context:before, .wy-inline-validate.wy-inline-validate-warning .wy-input-context:before, .wy-inline-validate.wy-inline-validate-info .wy-input-context:before {
   font-family: "FontAwesome";
   display: inline-block;
   font-style: normal;
@@ -2614,29 +2614,29 @@ big, small {
   line-height: 1;
   text-decoration: inherit; }
 
-a .fa, a .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li a span.toctree-expand, .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.current > a span.toctree-expand, a .rst-content .admonition-title, .rst-content a .admonition-title, a .rst-content h1 .headerlink, .rst-content h1 a .headerlink, a .rst-content h2 .headerlink, .rst-content h2 a .headerlink, a .rst-content h3 .headerlink, .rst-content h3 a .headerlink, a .rst-content h4 .headerlink, .rst-content h4 a .headerlink, a .rst-content h5 .headerlink, .rst-content h5 a .headerlink, a .rst-content h6 .headerlink, .rst-content h6 a .headerlink, a .rst-content dl dt .headerlink, .rst-content dl dt a .headerlink, a .rst-content p.caption .headerlink, .rst-content p.caption a .headerlink, a .rst-content tt.download span:first-child, .rst-content tt.download a span:first-child, a .rst-content code.download span:first-child, .rst-content code.download a span:first-child, a .icon {
+a .fa, a .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li a span.toctree-expand, .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.current > a span.toctree-expand, a .rst-content .admonition-title, .rst-content a .admonition-title, a .rst-content h1 .headerlink, .rst-content h1 a .headerlink, a .rst-content h2 .headerlink, .rst-content h2 a .headerlink, a .rst-content h3 .headerlink, .rst-content h3 a .headerlink, a .rst-content h4 .headerlink, .rst-content h4 a .headerlink, a .rst-content h5 .headerlink, .rst-content h5 a .headerlink, a .rst-content h6 .headerlink, .rst-content h6 a .headerlink, a .rst-content dl dt .headerlink, .rst-content dl dt a .headerlink, a .rst-content caption .headerlink, .rst-content caption a .headerlink, a .rst-content tt.download span:first-child, .rst-content tt.download a span:first-child, a .rst-content code.download span:first-child, .rst-content code.download a span:first-child, a .icon {
   display: inline-block;
   text-decoration: inherit; }
 
-.btn .fa, .btn .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li .btn span.toctree-expand, .btn .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.on a .btn span.toctree-expand, .btn .wy-menu-vertical li.current > a span.toctree-expand, .wy-menu-vertical li.current > a .btn span.toctree-expand, .btn .rst-content .admonition-title, .rst-content .btn .admonition-title, .btn .rst-content h1 .headerlink, .rst-content h1 .btn .headerlink, .btn .rst-content h2 .headerlink, .rst-content h2 .btn .headerlink, .btn .rst-content h3 .headerlink, .rst-content h3 .btn .headerlink, .btn .rst-content h4 .headerlink, .rst-content h4 .btn .headerlink, .btn .rst-content h5 .headerlink, .rst-content h5 .btn .headerlink, .btn .rst-content h6 .headerlink, .rst-content h6 .btn .headerlink, .btn .rst-content dl dt .headerlink, .rst-content dl dt .btn .headerlink, .btn .rst-content p.caption .headerlink, .rst-content p.caption .btn .headerlink, .btn .rst-content tt.download span:first-child, .rst-content tt.download .btn span:first-child, .btn .rst-content code.download span:first-child, .rst-content code.download .btn span:first-child, .btn .icon, .nav .fa, .nav .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li .nav span.toctree-expand, .nav .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.on a .nav span.toctree-expand, .nav .wy-menu-vertical li.current > a span.toctree-expand, .wy-menu-vertical li.current > a .nav span.toctree-expand, .nav .rst-content .admonition-title, .rst-content .nav .admonition-title, .nav .rst-content h1 .headerlink, .rst-content h1 .nav .headerlink, .nav .rst-content h2 .headerlink, .rst-content h2 .nav .headerlink, .nav .rst-content h3 .headerlink, .rst-content h3 .nav .headerlink, .nav .rst-content h4 .headerlink, .rst-content h4 .nav .headerlink, .nav .rst-content h5 .headerlink, .rst-content h5 .nav .headerlink, .nav .rst-content h6 .headerlink, .rst-content h6 .nav .headerlink, .nav .rst-content dl dt .headerlink, .rst-content dl dt .nav .headerlink, .nav .rst-content p.caption .headerlink, .rst-content p.caption .nav .headerlink, .nav .rst-content tt.download span:first-child, .rst-content tt.download .nav span:first-child, .nav .rst-content code.download span:first-child, .rst-content code.download .nav span:first-child, .nav .icon {
+.btn .fa, .btn .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li .btn span.toctree-expand, .btn .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.on a .btn span.toctree-expand, .btn .wy-menu-vertical li.current > a span.toctree-expand, .wy-menu-vertical li.current > a .btn span.toctree-expand, .btn .rst-content .admonition-title, .rst-content .btn .admonition-title, .btn .rst-content h1 .headerlink, .rst-content h1 .btn .headerlink, .btn .rst-content h2 .headerlink, .rst-content h2 .btn .headerlink, .btn .rst-content h3 .headerlink, .rst-content h3 .btn .headerlink, .btn .rst-content h4 .headerlink, .rst-content h4 .btn .headerlink, .btn .rst-content h5 .headerlink, .rst-content h5 .btn .headerlink, .btn .rst-content h6 .headerlink, .rst-content h6 .btn .headerlink, .btn .rst-content dl dt .headerlink, .rst-content dl dt .btn .headerlink, .btn .rst-content caption .headerlink, .rst-content caption .btn .headerlink, .btn .rst-content tt.download span:first-child, .rst-content tt.download .btn span:first-child, .btn .rst-content code.download span:first-child, .rst-content code.download .btn span:first-child, .btn .icon, .nav .fa, .nav .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li .nav span.toctree-expand, .nav .wy-menu-vertical li.on a span.toctree-expand, .wy-menu-vertical li.on a .nav span.toctree-expand, .nav .wy-menu-vertical li.current > a span.toctree-expand, .wy-menu-vertical li.current > a .nav span.toctree-expand, .nav .rst-content .admonition-title, .rst-content .nav .admonition-title, .nav .rst-content h1 .headerlink, .rst-content h1 .nav .headerlink, .nav .rst-content h2 .headerlink, .rst-content h2 .nav .headerlink, .nav .rst-content h3 .headerlink, .rst-content h3 .nav .headerlink, .nav .rst-content h4 .headerlink, .rst-content h4 .nav .headerlink, .nav .rst-content h5 .headerlink, .rst-content h5 .nav .headerlink, .nav .rst-content h6 .headerlink, .rst-content h6 .nav .headerlink, .nav .rst-content dl dt .headerlink, .rst-content dl dt .nav .headerlink, .nav .rst-content caption .headerlink, .rst-content caption .nav .headerlink, .nav .rst-content tt.download span:first-child, .rst-content tt.download .nav span:first-child, .nav .rst-content code.download span:first-child, .rst-content code.download .nav span:first-child, .nav .icon {
   display: inline; }
 
-.btn .fa.fa-large, .btn .wy-menu-vertical li span.fa-large.toctree-expand, .wy-menu-vertical li .btn span.fa-large.toctree-expand, .btn .rst-content .fa-large.admonition-title, .rst-content .btn .fa-large.admonition-title, .btn .rst-content h1 .fa-large.headerlink, .rst-content h1 .btn .fa-large.headerlink, .btn .rst-content h2 .fa-large.headerlink, .rst-content h2 .btn .fa-large.headerlink, .btn .rst-content h3 .fa-large.headerlink, .rst-content h3 .btn .fa-large.headerlink, .btn .rst-content h4 .fa-large.headerlink, .rst-content h4 .btn .fa-large.headerlink, .btn .rst-content h5 .fa-large.headerlink, .rst-content h5 .btn .fa-large.headerlink, .btn .rst-content h6 .fa-large.headerlink, .rst-content h6 .btn .fa-large.headerlink, .btn .rst-content dl dt .fa-large.headerlink, .rst-content dl dt .btn .fa-large.headerlink, .btn .rst-content p.caption .fa-large.headerlink, .rst-content p.caption .btn .fa-large.headerlink, .btn .rst-content tt.download span.fa-large:first-child, .rst-content tt.download .btn span.fa-large:first-child, .btn .rst-content code.download span.fa-large:first-child, .rst-content code.download .btn span.fa-large:first-child, .btn .fa-large.icon, .nav .fa.fa-large, .nav .wy-menu-vertical li span.fa-large.toctree-expand, .wy-menu-vertical li .nav span.fa-large.toctree-expand, .nav .rst-content .fa-large.admonition-title, .rst-content .nav .fa-large.admonition-title, .nav .rst-content h1 .fa-large.headerlink, .rst-content h1 .nav .fa-large.headerlink, .nav .rst-content h2 .fa-large.headerlink, .rst-content h2 .nav .fa-large.headerlink, .nav .rst-content h3 .fa-large.headerlink, .rst-content h3 .nav .fa-large.headerlink, .nav .rst-content h4 .fa-large.headerlink, .rst-content h4 .nav .fa-large.headerlink, .nav .rst-content h5 .fa-large.headerlink, .rst-content h5 .nav .fa-large.headerlink, .nav .rst-content h6 .fa-large.headerlink, .rst-content h6 .nav .fa-large.headerlink, .nav .rst-content dl dt .fa-large.headerlink, .rst-content dl dt .nav .fa-large.headerlink, .nav .rst-content p.caption .fa-large.headerlink, .rst-content p.caption .nav .fa-large.headerlink, .nav .rst-content tt.download span.fa-large:first-child, .rst-content tt.download .nav span.fa-large:first-child, .nav .rst-content code.download span.fa-large:first-child, .rst-content code.download .nav span.fa-large:first-child, .nav .fa-large.icon {
+.btn .fa.fa-large, .btn .wy-menu-vertical li span.fa-large.toctree-expand, .wy-menu-vertical li .btn span.fa-large.toctree-expand, .btn .rst-content .fa-large.admonition-title, .rst-content .btn .fa-large.admonition-title, .btn .rst-content h1 .fa-large.headerlink, .rst-content h1 .btn .fa-large.headerlink, .btn .rst-content h2 .fa-large.headerlink, .rst-content h2 .btn .fa-large.headerlink, .btn .rst-content h3 .fa-large.headerlink, .rst-content h3 .btn .fa-large.headerlink, .btn .rst-content h4 .fa-large.headerlink, .rst-content h4 .btn .fa-large.headerlink, .btn .rst-content h5 .fa-large.headerlink, .rst-content h5 .btn .fa-large.headerlink, .btn .rst-content h6 .fa-large.headerlink, .rst-content h6 .btn .fa-large.headerlink, .btn .rst-content dl dt .fa-large.headerlink, .rst-content dl dt .btn .fa-large.headerlink, .btn .rst-content caption .fa-large.headerlink, .rst-content caption .btn .fa-large.headerlink, .btn .rst-content tt.download span.fa-large:first-child, .rst-content tt.download .btn span.fa-large:first-child, .btn .rst-content code.download span.fa-large:first-child, .rst-content code.download .btn span.fa-large:first-child, .btn .fa-large.icon, .nav .fa.fa-large, .nav .wy-menu-vertical li span.fa-large.toctree-expand, .wy-menu-vertical li .nav span.fa-large.toctree-expand, .nav .rst-content .fa-large.admonition-title, .rst-content .nav .fa-large.admonition-title, .nav .rst-content h1 .fa-large.headerlink, .rst-content h1 .nav .fa-large.headerlink, .nav .rst-content h2 .fa-large.headerlink, .rst-content h2 .nav .fa-large.headerlink, .nav .rst-content h3 .fa-large.headerlink, .rst-content h3 .nav .fa-large.headerlink, .nav .rst-content h4 .fa-large.headerlink, .rst-content h4 .nav .fa-large.headerlink, .nav .rst-content h5 .fa-large.headerlink, .rst-content h5 .nav .fa-large.headerlink, .nav .rst-content h6 .fa-large.headerlink, .rst-content h6 .nav .fa-large.headerlink, .nav .rst-content dl dt .fa-large.headerlink, .rst-content dl dt .nav .fa-large.headerlink, .nav .rst-content caption .fa-large.headerlink, .rst-content caption .nav .fa-large.headerlink, .nav .rst-content tt.download span.fa-large:first-child, .rst-content tt.download .nav span.fa-large:first-child, .nav .rst-content code.download span.fa-large:first-child, .rst-content code.download .nav span.fa-large:first-child, .nav .fa-large.icon {
   line-height: 0.9em; }
 
-.btn .fa.fa-spin, .btn .wy-menu-vertical li span.fa-spin.toctree-expand, .wy-menu-vertical li .btn span.fa-spin.toctree-expand, .btn .rst-content .fa-spin.admonition-title, .rst-content .btn .fa-spin.admonition-title, .btn .rst-content h1 .fa-spin.headerlink, .rst-content h1 .btn .fa-spin.headerlink, .btn .rst-content h2 .fa-spin.headerlink, .rst-content h2 .btn .fa-spin.headerlink, .btn .rst-content h3 .fa-spin.headerlink, .rst-content h3 .btn .fa-spin.headerlink, .btn .rst-content h4 .fa-spin.headerlink, .rst-content h4 .btn .fa-spin.headerlink, .btn .rst-content h5 .fa-spin.headerlink, .rst-content h5 .btn .fa-spin.headerlink, .btn .rst-content h6 .fa-spin.headerlink, .rst-content h6 .btn .fa-spin.headerlink, .btn .rst-content dl dt .fa-spin.headerlink, .rst-content dl dt .btn .fa-spin.headerlink, .btn .rst-content p.caption .fa-spin.headerlink, .rst-content p.caption .btn .fa-spin.headerlink, .btn .rst-content tt.download span.fa-spin:first-child, .rst-content tt.download .btn span.fa-spin:first-child, .btn .rst-content code.download span.fa-spin:first-child, .rst-content code.download .btn span.fa-spin:first-child, .btn .fa-spin.icon, .nav .fa.fa-spin, .nav .wy-menu-vertical li span.fa-spin.toctree-expand, .wy-menu-vertical li .nav span.fa-spin.toctree-expand, .nav .rst-content .fa-spin.admonition-title, .rst-content .nav .fa-spin.admonition-title, .nav .rst-content h1 .fa-spin.headerlink, .rst-content h1 .nav .fa-spin.headerlink, .nav .rst-content h2 .fa-spin.headerlink, .rst-content h2 .nav .fa-spin.headerlink, .nav .rst-content h3 .fa-spin.headerlink, .rst-content h3 .nav .fa-spin.headerlink, .nav .rst-content h4 .fa-spin.headerlink, .rst-content h4 .nav .fa-spin.headerlink, .nav .rst-content h5 .fa-spin.headerlink, .rst-content h5 .nav .fa-spin.headerlink, .nav .rst-content h6 .fa-spin.headerlink, .rst-content h6 .nav .fa-spin.headerlink, .nav .rst-content dl dt .fa-spin.headerlink, .rst-content dl dt .nav .fa-spin.headerlink, .nav .rst-content p.caption .fa-spin.headerlink, .rst-content p.caption .nav .fa-spin.headerlink, .nav .rst-content tt.download span.fa-spin:first-child, .rst-content tt.download .nav span.fa-spin:first-child, .nav .rst-content code.download span.fa-spin:first-child, .rst-content code.download .nav span.fa-spin:first-child, .nav .fa-spin.icon {
+.btn .fa.fa-spin, .btn .wy-menu-vertical li span.fa-spin.toctree-expand, .wy-menu-vertical li .btn span.fa-spin.toctree-expand, .btn .rst-content .fa-spin.admonition-title, .rst-content .btn .fa-spin.admonition-title, .btn .rst-content h1 .fa-spin.headerlink, .rst-content h1 .btn .fa-spin.headerlink, .btn .rst-content h2 .fa-spin.headerlink, .rst-content h2 .btn .fa-spin.headerlink, .btn .rst-content h3 .fa-spin.headerlink, .rst-content h3 .btn .fa-spin.headerlink, .btn .rst-content h4 .fa-spin.headerlink, .rst-content h4 .btn .fa-spin.headerlink, .btn .rst-content h5 .fa-spin.headerlink, .rst-content h5 .btn .fa-spin.headerlink, .btn .rst-content h6 .fa-spin.headerlink, .rst-content h6 .btn .fa-spin.headerlink, .btn .rst-content dl dt .fa-spin.headerlink, .rst-content dl dt .btn .fa-spin.headerlink, .btn .rst-content caption .fa-spin.headerlink, .rst-content caption .btn .fa-spin.headerlink, .btn .rst-content tt.download span.fa-spin:first-child, .rst-content tt.download .btn span.fa-spin:first-child, .btn .rst-content code.download span.fa-spin:first-child, .rst-content code.download .btn span.fa-spin:first-child, .btn .fa-spin.icon, .nav .fa.fa-spin, .nav .wy-menu-vertical li span.fa-spin.toctree-expand, .wy-menu-vertical li .nav span.fa-spin.toctree-expand, .nav .rst-content .fa-spin.admonition-title, .rst-content .nav .fa-spin.admonition-title, .nav .rst-content h1 .fa-spin.headerlink, .rst-content h1 .nav .fa-spin.headerlink, .nav .rst-content h2 .fa-spin.headerlink, .rst-content h2 .nav .fa-spin.headerlink, .nav .rst-content h3 .fa-spin.headerlink, .rst-content h3 .nav .fa-spin.headerlink, .nav .rst-content h4 .fa-spin.headerlink, .rst-content h4 .nav .fa-spin.headerlink, .nav .rst-content h5 .fa-spin.headerlink, .rst-content h5 .nav .fa-spin.headerlink, .nav .rst-content h6 .fa-spin.headerlink, .rst-content h6 .nav .fa-spin.headerlink, .nav .rst-content dl dt .fa-spin.headerlink, .rst-content dl dt .nav .fa-spin.headerlink, .nav .rst-content caption .fa-spin.headerlink, .rst-content caption .nav .fa-spin.headerlink, .nav .rst-content tt.download span.fa-spin:first-child, .rst-content tt.download .nav span.fa-spin:first-child, .nav .rst-content code.download span.fa-spin:first-child, .rst-content code.download .nav span.fa-spin:first-child, .nav .fa-spin.icon {
   display: inline-block; }
 
-.btn.fa:before, .wy-menu-vertical li span.btn.toctree-expand:before, .rst-content .btn.admonition-title:before, .rst-content h1 .btn.headerlink:before, .rst-content h2 .btn.headerlink:before, .rst-content h3 .btn.headerlink:before, .rst-content h4 .btn.headerlink:before, .rst-content h5 .btn.headerlink:before, .rst-content h6 .btn.headerlink:before, .rst-content dl dt .btn.headerlink:before, .rst-content p.caption .btn.headerlink:before, .rst-content tt.download span.btn:first-child:before, .rst-content code.download span.btn:first-child:before, .btn.icon:before {
+.btn.fa:before, .wy-menu-vertical li span.btn.toctree-expand:before, .rst-content .btn.admonition-title:before, .rst-content h1 .btn.headerlink:before, .rst-content h2 .btn.headerlink:before, .rst-content h3 .btn.headerlink:before, .rst-content h4 .btn.headerlink:before, .rst-content h5 .btn.headerlink:before, .rst-content h6 .btn.headerlink:before, .rst-content dl dt .btn.headerlink:before, .rst-content caption .btn.headerlink:before, .rst-content tt.download span.btn:first-child:before, .rst-content code.download span.btn:first-child:before, .btn.icon:before {
   opacity: 0.5;
   -webkit-transition: opacity 0.05s ease-in;
   -moz-transition: opacity 0.05s ease-in;
   transition: opacity 0.05s ease-in; }
 
-.btn.fa:hover:before, .wy-menu-vertical li span.btn.toctree-expand:hover:before, .rst-content .btn.admonition-title:hover:before, .rst-content h1 .btn.headerlink:hover:before, .rst-content h2 .btn.headerlink:hover:before, .rst-content h3 .btn.headerlink:hover:before, .rst-content h4 .btn.headerlink:hover:before, .rst-content h5 .btn.headerlink:hover:before, .rst-content h6 .btn.headerlink:hover:before, .rst-content dl dt .btn.headerlink:hover:before, .rst-content p.caption .btn.headerlink:hover:before, .rst-content tt.download span.btn:first-child:hover:before, .rst-content code.download span.btn:first-child:hover:before, .btn.icon:hover:before {
+.btn.fa:hover:before, .wy-menu-vertical li span.btn.toctree-expand:hover:before, .rst-content .btn.admonition-title:hover:before, .rst-content h1 .btn.headerlink:hover:before, .rst-content h2 .btn.headerlink:hover:before, .rst-content h3 .btn.headerlink:hover:before, .rst-content h4 .btn.headerlink:hover:before, .rst-content h5 .btn.headerlink:hover:before, .rst-content h6 .btn.headerlink:hover:before, .rst-content dl dt .btn.headerlink:hover:before, .rst-content caption .btn.headerlink:hover:before, .rst-content tt.download span.btn:first-child:hover:before, .rst-content code.download span.btn:first-child:hover:before, .btn.icon:hover:before {
   opacity: 1; }
 
-.btn-mini .fa:before, .btn-mini .wy-menu-vertical li span.toctree-expand:before, .wy-menu-vertical li .btn-mini span.toctree-expand:before, .btn-mini .rst-content .admonition-title:before, .rst-content .btn-mini .admonition-title:before, .btn-mini .rst-content h1 .headerlink:before, .rst-content h1 .btn-mini .headerlink:before, .btn-mini .rst-content h2 .headerlink:before, .rst-content h2 .btn-mini .headerlink:before, .btn-mini .rst-content h3 .headerlink:before, .rst-content h3 .btn-mini .headerlink:before, .btn-mini .rst-content h4 .headerlink:before, .rst-content h4 .btn-mini .headerlink:before, .btn-mini .rst-content h5 .headerlink:before, .rst-content h5 .btn-mini .headerlink:before, .btn-mini .rst-content h6 .headerlink:before, .rst-content h6 .btn-mini .headerlink:before, .btn-mini .rst-content dl dt .headerlink:before, .rst-content dl dt .btn-mini .headerlink:before, .btn-mini .rst-content p.caption .headerlink:before, .rst-content p.caption .btn-mini .headerlink:before, .btn-mini .rst-content tt.download span:first-child:before, .rst-content tt.download .btn-mini span:first-child:before, .btn-mini .rst-content code.download span:first-child:before, .rst-content code.download .btn-mini span:first-child:before, .btn-mini .icon:before {
+.btn-mini .fa:before, .btn-mini .wy-menu-vertical li span.toctree-expand:before, .wy-menu-vertical li .btn-mini span.toctree-expand:before, .btn-mini .rst-content .admonition-title:before, .rst-content .btn-mini .admonition-title:before, .btn-mini .rst-content h1 .headerlink:before, .rst-content h1 .btn-mini .headerlink:before, .btn-mini .rst-content h2 .headerlink:before, .rst-content h2 .btn-mini .headerlink:before, .btn-mini .rst-content h3 .headerlink:before, .rst-content h3 .btn-mini .headerlink:before, .btn-mini .rst-content h4 .headerlink:before, .rst-content h4 .btn-mini .headerlink:before, .btn-mini .rst-content h5 .headerlink:before, .rst-content h5 .btn-mini .headerlink:before, .btn-mini .rst-content h6 .headerlink:before, .rst-content h6 .btn-mini .headerlink:before, .btn-mini .rst-content dl dt .headerlink:before, .rst-content dl dt .btn-mini .headerlink:before, .btn-mini .rst-content caption .headerlink:before, .rst-content caption .btn-mini .headerlink:before, .btn-mini .rst-content tt.download span:first-child:before, .rst-content tt.download .btn-mini span:first-child:before, .btn-mini .rst-content code.download span:first-child:before, .rst-content code.download .btn-mini span:first-child:before, .btn-mini .icon:before {
   font-size: 14px;
   vertical-align: -15%; }
 
@@ -3666,7 +3666,7 @@ a.wy-text-danger:hover {
 a.wy-text-neutral:hover {
   color: #595959 !important; }
 
-h1, h2, .rst-content .toctree-wrapper p.caption, h3, h4, h5, h6, legend {
+h1, h2, .rst-content .toctree-wrapper caption, h3, h4, h5, h6, legend {
   margin-top: 0;
   font-weight: 700;
   font-family: BlinkMacSystemFont, -apple-system, "Segoe UI", "Noto Sans", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; }
@@ -3680,7 +3680,7 @@ p {
 h1 {
   font-size: 36px; }
 
-h2, .rst-content .toctree-wrapper p.caption {
+h2, .rst-content .toctree-wrapper caption {
   font-size: 28px; }
 
 h3 {
@@ -3717,46 +3717,46 @@ code, .rst-content tt, .rst-content code {
 code.code-large, .rst-content tt.code-large {
   font-size: 90%; }
 
-.wy-plain-list-disc, .rst-content .section ul, .rst-content .toctree-wrapper ul, article ul {
+.wy-plain-list-disc, .rst-content section ul, .rst-content .toctree-wrapper ul, article ul {
   list-style: disc;
   line-height: 24px;
   margin-bottom: 24px; }
 
-.wy-plain-list-disc li, .rst-content .section ul li, .rst-content .toctree-wrapper ul li, article ul li {
+.wy-plain-list-disc li, .rst-content section ul li, .rst-content .toctree-wrapper ul li, article ul li {
   list-style: disc;
   margin-left: 24px; }
 
-.wy-plain-list-disc li p:last-child, .rst-content .section ul li p:last-child, .rst-content .toctree-wrapper ul li p:last-child, article ul li p:last-child {
+.wy-plain-list-disc li p:last-child, .rst-content section ul li p:last-child, .rst-content .toctree-wrapper ul li p:last-child, article ul li p:last-child {
   margin-bottom: 0; }
 
-.wy-plain-list-disc li ul, .rst-content .section ul li ul, .rst-content .toctree-wrapper ul li ul, article ul li ul {
+.wy-plain-list-disc li ul, .rst-content section ul li ul, .rst-content .toctree-wrapper ul li ul, article ul li ul {
   margin-bottom: 0; }
 
-.wy-plain-list-disc li li, .rst-content .section ul li li, .rst-content .toctree-wrapper ul li li, article ul li li {
+.wy-plain-list-disc li li, .rst-content section ul li li, .rst-content .toctree-wrapper ul li li, article ul li li {
   list-style: circle; }
 
-.wy-plain-list-disc li li li, .rst-content .section ul li li li, .rst-content .toctree-wrapper ul li li li, article ul li li li {
+.wy-plain-list-disc li li li, .rst-content section ul li li li, .rst-content .toctree-wrapper ul li li li, article ul li li li {
   list-style: square; }
 
-.wy-plain-list-disc li ol li, .rst-content .section ul li ol li, .rst-content .toctree-wrapper ul li ol li, article ul li ol li {
+.wy-plain-list-disc li ol li, .rst-content section ul li ol li, .rst-content .toctree-wrapper ul li ol li, article ul li ol li {
   list-style: decimal; }
 
-.wy-plain-list-decimal, .rst-content .section ol, .rst-content ol.arabic, article ol {
+.wy-plain-list-decimal, .rst-content section ol, .rst-content ol.arabic, article ol {
   list-style: decimal;
   line-height: 24px;
   margin-bottom: 24px; }
 
-.wy-plain-list-decimal li, .rst-content .section ol li, .rst-content ol.arabic li, article ol li {
+.wy-plain-list-decimal li, .rst-content section ol li, .rst-content ol.arabic li, article ol li {
   list-style: decimal;
   margin-left: 24px; }
 
-.wy-plain-list-decimal li p:last-child, .rst-content .section ol li p:last-child, .rst-content ol.arabic li p:last-child, article ol li p:last-child {
+.wy-plain-list-decimal li p:last-child, .rst-content section ol li p:last-child, .rst-content ol.arabic li p:last-child, article ol li p:last-child {
   margin-bottom: 0; }
 
-.wy-plain-list-decimal li ul, .rst-content .section ol li ul, .rst-content ol.arabic li ul, article ol li ul {
+.wy-plain-list-decimal li ul, .rst-content section ol li ul, .rst-content ol.arabic li ul, article ol li ul {
   margin-bottom: 0; }
 
-.wy-plain-list-decimal li ul li, .rst-content .section ol li ul li, .rst-content ol.arabic li ul li, article ol li ul li {
+.wy-plain-list-decimal li ul li, .rst-content section ol li ul li, .rst-content ol.arabic li ul li, article ol li ul li {
   list-style: disc; }
 
 .codeblock-example {
@@ -4103,7 +4103,7 @@ div[class^='highlight'] pre {
 .wy-menu-vertical {
   width: 300px; }
 
-.wy-menu-vertical header, .wy-menu-vertical p.caption, .wy-menu-vertical p {
+.wy-menu-vertical header, .wy-menu-vertical caption, .wy-menu-vertical p {
   height: 32px;
   display: inline-block;
   line-height: 32px;
@@ -4544,7 +4544,7 @@ footer span.commit code, footer span.commit .rst-content tt, .rst-content footer
   .rst-versions .rst-current-version .fa {
     font-size: 12px; }
 
-.rst-versions .rst-current-version .fa, .rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand, .rst-versions .rst-current-version .rst-content .admonition-title, .rst-content .rst-versions .rst-current-version .admonition-title, .rst-versions .rst-current-version .rst-content h1 .headerlink, .rst-content h1 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h2 .headerlink, .rst-content h2 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h3 .headerlink, .rst-content h3 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h4 .headerlink, .rst-content h4 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h5 .headerlink, .rst-content h5 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h6 .headerlink, .rst-content h6 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content dl dt .headerlink, .rst-content dl dt .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content p.caption .headerlink, .rst-content p.caption .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content tt.download span:first-child, .rst-content tt.download .rst-versions .rst-current-version span:first-child, .rst-versions .rst-current-version .rst-content code.download span:first-child, .rst-content code.download .rst-versions .rst-current-version span:first-child, .rst-versions .rst-current-version .icon {
+.rst-versions .rst-current-version .fa, .rst-versions .rst-current-version .wy-menu-vertical li span.toctree-expand, .wy-menu-vertical li .rst-versions .rst-current-version span.toctree-expand, .rst-versions .rst-current-version .rst-content .admonition-title, .rst-content .rst-versions .rst-current-version .admonition-title, .rst-versions .rst-current-version .rst-content h1 .headerlink, .rst-content h1 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h2 .headerlink, .rst-content h2 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h3 .headerlink, .rst-content h3 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h4 .headerlink, .rst-content h4 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h5 .headerlink, .rst-content h5 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content h6 .headerlink, .rst-content h6 .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content dl dt .headerlink, .rst-content dl dt .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content caption .headerlink, .rst-content caption .rst-versions .rst-current-version .headerlink, .rst-versions .rst-current-version .rst-content tt.download span:first-child, .rst-content tt.download .rst-versions .rst-current-version span:first-child, .rst-versions .rst-current-version .rst-content code.download span:first-child, .rst-content code.download .rst-versions .rst-current-version span:first-child, .rst-versions .rst-current-version .icon {
   color: black; }
 
 .rst-versions .rst-current-version.rst-out-of-date {
@@ -4602,16 +4602,16 @@ footer span.commit code, footer span.commit .rst-content tt, .rst-content footer
   max-width: 100%;
   height: auto !important; }
 
-.rst-content div.figure {
+.rst-content figure {
   margin-bottom: 24px; }
 
-.rst-content div.figure p.caption {
+.rst-content figure figcaption {
   font-style: italic; }
 
-.rst-content div.figure.align-center {
+.rst-content figure.align-center {
   text-align: center; }
 
-.rst-content .section > img, .rst-content .section > a > img {
+.rst-content section > img, .rst-content section > a > img {
   margin-bottom: 24px; }
 
 .rst-content blockquote {
@@ -4633,13 +4633,13 @@ footer span.commit code, footer span.commit .rst-content tt, .rst-content footer
   background: transparent !important;
   border-color: rgba(0, 0, 0, 0.1) !important; }
 
-.rst-content .section ol.loweralpha, .rst-content .section ol.loweralpha li {
+.rst-content section ol.loweralpha, .rst-content section ol.loweralpha li {
   list-style: lower-alpha; }
 
-.rst-content .section ol.upperalpha, .rst-content .section ol.upperalpha li {
+.rst-content section ol.upperalpha, .rst-content section ol.upperalpha li {
   list-style: upper-alpha; }
 
-.rst-content .section ol p, .rst-content .section ul p {
+.rst-content section ol p, .rst-content section ul p {
   margin-bottom: 12px; }
 
 .rst-content .line-block {
@@ -4664,18 +4664,18 @@ footer span.commit code, footer span.commit .rst-content tt, .rst-content footer
   margin: auto;
   display: block; }
 
-.rst-content h1 .headerlink, .rst-content h2 .headerlink, .rst-content .toctree-wrapper p.caption .headerlink, .rst-content h3 .headerlink, .rst-content h4 .headerlink, .rst-content h5 .headerlink, .rst-content h6 .headerlink, .rst-content dl dt .headerlink, .rst-content p.caption .headerlink {
+.rst-content h1 .headerlink, .rst-content h2 .headerlink, .rst-content .toctree-wrapper caption .headerlink, .rst-content h3 .headerlink, .rst-content h4 .headerlink, .rst-content h5 .headerlink, .rst-content h6 .headerlink, .rst-content dl dt .headerlink, .rst-content caption .headerlink {
   display: none;
   visibility: hidden;
   font-size: 14px; }
 
-.rst-content h1 .headerlink:after, .rst-content h2 .headerlink:after, .rst-content .toctree-wrapper p.caption .headerlink:after, .rst-content h3 .headerlink:after, .rst-content h4 .headerlink:after, .rst-content h5 .headerlink:after, .rst-content h6 .headerlink:after, .rst-content dl dt .headerlink:after, .rst-content p.caption .headerlink:after {
+.rst-content h1 .headerlink:after, .rst-content h2 .headerlink:after, .rst-content .toctree-wrapper caption .headerlink:after, .rst-content h3 .headerlink:after, .rst-content h4 .headerlink:after, .rst-content h5 .headerlink:after, .rst-content h6 .headerlink:after, .rst-content dl dt .headerlink:after, .rst-content caption .headerlink:after {
   visibility: visible;
   content: "";
   font-family: FontAwesome;
   display: inline-block; }
 
-.rst-content h1:hover .headerlink, .rst-content h2:hover .headerlink, .rst-content .toctree-wrapper p.caption:hover .headerlink, .rst-content h3:hover .headerlink, .rst-content h4:hover .headerlink, .rst-content h5:hover .headerlink, .rst-content h6:hover .headerlink, .rst-content dl dt:hover .headerlink, .rst-content p.caption:hover .headerlink {
+.rst-content h1:hover .headerlink, .rst-content h2:hover .headerlink, .rst-content .toctree-wrapper caption:hover .headerlink, .rst-content h3:hover .headerlink, .rst-content h4:hover .headerlink, .rst-content h5:hover .headerlink, .rst-content h6:hover .headerlink, .rst-content dl dt:hover .headerlink, .rst-content caption:hover .headerlink {
   display: inline-block; }
 
 .rst-content .centered {
@@ -4838,6 +4838,9 @@ footer span.commit code, footer span.commit .rst-content tt, .rst-content footer
   display: inline-block;
   padding-right: 8px; }
 
+.rst-content dl:not(.docutils) span.pre~code.sig-name.descname, .rst-content dl:not(.docutils) .pre~em {
+  padding-left: 8px; }
+
 .rst-content .viewcode-link, .rst-content .viewcode-back {
   display: inline-block;
   color: #27AE60;
-- 
GitLab