Sphinx autodoc extension¶
Extension¶
The guidata
library provides a Sphinx extension to automatically document
data set classes (guidata.dataset.datatypes.DataSet
).
This extension is based on the Sphinx autodoc extension.
Three directives are provided:
.. autodataset_create:: [module.dataset].create
to document thecreate()
classmethod of aDataSet
using itsDataItem
.
.. datasetnote:: [module.dataset] [n]
to display a note on how to instanciate a dataset. Optional parametern
gives the number of items to show.
.. autodataset:: [module.dataset]
used to document a dataset class. It is derived from the.. autoclass::
directive and therefore has the same options. By default, it will document a dataset without its constructor signature but will document its attributes and thecreate()
class method using theautodataset_create
directive. Several additional options are available to more finely tune the documentation (see examples below).
Example dataset¶
# -*- coding: utf-8 -*-
import atexit
import datetime
import shutil
import tempfile
import numpy as np
import guidata.dataset as gds
from guidata.env import execenv
from guidata.qthelpers import qt_app_context
# Creating temporary files and registering cleanup functions
TEMPDIR = tempfile.mkdtemp(prefix="test_")
atexit.register(shutil.rmtree, TEMPDIR)
FILE_ETA = tempfile.NamedTemporaryFile(suffix=".eta", dir=TEMPDIR)
atexit.register(FILE_ETA.close)
FILE_CSV = tempfile.NamedTemporaryFile(suffix=".csv", dir=TEMPDIR)
atexit.register(FILE_CSV.close)
class AutodocExampleParam1(gds.DataSet):
"""Example of a complete dataset with all possible items. Used as an autodoc
example."""
dir = gds.DirectoryItem("<strong>Directory</strong>", TEMPDIR)
a = gds.FloatItem("Parameter #1", default=2.3)
b = gds.IntItem("Parameter #2", min=0, max=10, default=5)
c = gds.StringItem("Parameter #3", default="default value")
type = gds.ChoiceItem("Processing algorithm", ("type 1", "type 2", "type 3"))
fname = gds.FileOpenItem("Open file", ("csv", "eta"), FILE_CSV.name)
fnames = gds.FilesOpenItem("Open files", "csv", FILE_CSV.name)
fname_s = gds.FileSaveItem("Save file", "eta", FILE_ETA.name)
string = gds.StringItem("String")
text = gds.TextItem("Text")
float_slider = gds.FloatItem(
"Float (with slider)", default=0.5, min=0, max=1, step=0.01, slider=True
)
integer = gds.IntItem("Integer", default=5, min=3, max=16, slider=True).set_pos(
col=1
)
dtime = gds.DateTimeItem("Date/time", default=datetime.datetime(2010, 10, 10))
date = gds.DateItem("Date", default=datetime.date(2010, 10, 10)).set_pos(col=1)
bool1 = gds.BoolItem("Boolean option without label")
bool2 = gds.BoolItem("Boolean option with label", "Label")
_bg = gds.BeginGroup("A sub group")
color = gds.ColorItem("Color", default="red")
choice = gds.ChoiceItem(
"Single choice 1",
[
("16", "first choice"),
("32", "second choice"),
("64", "third choice"),
(128, "fourth choice"),
],
)
mchoice2 = gds.ImageChoiceItem(
"Single choice 2",
[
("rect", "first choice", "gif.png"),
("ell", "second choice", "txt.png"),
("qcq", "third choice", "file.png"),
],
)
_eg = gds.EndGroup("A sub group")
floatarray = gds.FloatArrayItem("Float array", format=" %.2e ").set_pos(col=1)
mchoice3 = gds.MultipleChoiceItem(
"MC type 1", [str(i) for i in range(12)]
).horizontal(4)
mchoice1 = (
gds.MultipleChoiceItem(
"MC type 2", ["first choice", "second choice", "third choice"]
)
.vertical(1)
.set_pos(col=1)
)
dictionary = gds.DictItem(
"Dictionary",
help="This is a dictionary",
)
def doc_test(self, a: int, b: float, c: str) -> str:
"""Test method for autodoc.
Args:
a: first parameter.
b: second parameter.
c: third parameter.
Returns:
Concatenation of c and (a + b).
"""
return c + str(a + b)
class AutodocExampleParam2(AutodocExampleParam1):
pass
Generated documentation¶
Basic usage¶
In most cases, the .. autodataset::
directive should be sufficient to document
a dataset. However, it might be useful to display examples on how to instanciate the
given dataset. This can be done using the :shownote:
option (or the
.. datasetnote::
directive).
.. autodataset:: autodoc_example.AutodocExampleParam1
.. autodataset:: autodoc_example.AutodocExampleParam1
:shownote:
The second example line would result in the following documentation:
- class autodoc_example.AutodocExampleParam1¶
- Example of a complete dataset with all possible items. Used as an autodoc
example.
- dir¶
Directory. Default: ‘/tmp/test_l009zrp5’.
- a¶
Parameter #1. Default: 2.3.
- b¶
Parameter #2. Integer between 0 and 10. Default: 5.
- c¶
Parameter #3. Default: ‘default value’.
- type¶
Processing algorithm. Single choice from: 0, 1, 2. Default: 0.
- fname¶
Open file. Supported file types: *.csv, *.eta. Default: ‘/tmp/test_l009zrp5/tmp2rbf46am.csv’.
- fnames¶
Open files. Supported file types: *.csv. Default: ‘/tmp/test_l009zrp5/tmp2rbf46am.csv’.
- fname_s¶
Save file. Supported file types: *.eta. Default: ‘/tmp/test_l009zrp5/tmp288e7n4v.eta’.
- string¶
Default: None.
- text¶
Default: None.
- float_slider¶
Float (with slider). Float between 0 and 1. Default: 0.5.
- integer¶
Integer between 3 and 16. Default: 5.
- dtime¶
Date/time. Default: datetime.datetime(2010, 10, 10, 0, 0).
- date¶
Default: datetime.date(2010, 10, 10).
- bool1¶
Default: None.
- bool2¶
Label. Default: None.
- color¶
Default: ‘red’.
- choice¶
Single choice 1. Single choice from: ‘16’, ‘32’, ‘64’, 128. Default: ‘16’.
- mchoice2¶
Single choice 2. Single choice from: ‘rect’, ‘ell’, ‘qcq’. Default: ‘rect’.
- floatarray¶
Default: None.
- mchoice3¶
MC type 1. Multiple choice from: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. Default: ().
- mchoice1¶
MC type 2. Multiple choice from: 0, 1, 2. Default: ().
- dictionary¶
This is a dictionary. Default: None.
- classmethod create(dir: str, a: float, b: int, c: str, type: int, fname: str, fnames: list, fname_s: str, string: str, text: str, float_slider: float, integer: int, dtime: datetime.datetime, date: datetime.date, bool1: bool, bool2: bool, color: str, choice: int | str, mchoice2: str, floatarray: numpy.ndarray, mchoice3: int, mchoice1: int, dictionary: dict) autodoc_example.AutodocExampleParam1 ¶
Returns a new instance of
AutodocExampleParam1
with the fields set to the given values.- Parameters:
dir (str) – Directory. Default: ‘/tmp/test_l009zrp5’.
a (float) – Parameter #1. Default: 2.3.
b (int) – Parameter #2. Integer between 0 and 10. Default: 5.
c (str) – Parameter #3. Default: ‘default value’.
type (int) – Processing algorithm. Single choice from: 0, 1, 2. Default: 0.
fname (str) – Open file. Supported file types: *.csv, *.eta. Default: ‘/tmp/test_l009zrp5/tmp2rbf46am.csv’.
fnames (list) – Open files. Supported file types: *.csv. Default: ‘/tmp/test_l009zrp5/tmp2rbf46am.csv’.
fname_s (str) – Save file. Supported file types: *.eta. Default: ‘/tmp/test_l009zrp5/tmp288e7n4v.eta’.
string (str) – Default: None.
text (str) – Default: None.
float_slider (float) – Float (with slider). Float between 0 and 1. Default: 0.5.
integer (int) – Integer between 3 and 16. Default: 5.
dtime (datetime.datetime) – Date/time. Default: datetime.datetime(2010, 10, 10, 0, 0).
date (datetime.date) – Default: datetime.date(2010, 10, 10).
bool1 (bool) – Default: None.
bool2 (bool) – Label. Default: None.
color (str) – Default: ‘red’.
choice (Union[int, str]) – Single choice 1. Single choice from: ‘16’, ‘32’, ‘64’, 128. Default: ‘16’.
mchoice2 (str) – Single choice 2. Single choice from: ‘rect’, ‘ell’, ‘qcq’. Default: ‘rect’.
floatarray (numpy.ndarray) – Default: None.
mchoice3 (int) – MC type 1. Multiple choice from: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11. Default: ().
mchoice1 (int) – MC type 2. Multiple choice from: 0, 1, 2. Default: ().
dictionary (dict) – This is a dictionary. Default: None.
- Returns:
New instance of
AutodocExampleParam1
.
Note
To instanciate a new
AutodocExampleParam1
dataset, you can use the classmethodAutodocExampleParam1.create()
like this:AutodocExampleParam1.create(dir='/tmp/test_l009zrp5', a=2.3, b=5, c='default value', type=0, fname='/tmp/test_l009zrp5/tmp2rbf46am.csv', fnames='/tmp/test_l009zrp5/tmp2rbf46am.csv', fname_s='/tmp/test_l009zrp5/tmp288e7n4v.eta', string=None, text=None, float_slider=0.5, integer=5, dtime=datetime.datetime(2010, 10, 10, 0, 0), date=datetime.date(2010, 10, 10), bool1=None, bool2=None, color='red', choice='16', mchoice2='rect', floatarray=None, mchoice3=(), mchoice1=(), dictionary=None)
You can also first instanciate a default
AutodocExampleParam1
and then set the fields like this:param = AutodocExampleParam1() param.dir = '/tmp/test_l009zrp5' param.a = 2.3 param.b = 5 param.c = 'default value' param.type = 0 param.fname = '/tmp/test_l009zrp5/tmp2rbf46am.csv' param.fnames = '/tmp/test_l009zrp5/tmp2rbf46am.csv' param.fname_s = '/tmp/test_l009zrp5/tmp288e7n4v.eta' param.string = None param.text = None param.float_slider = 0.5 param.integer = 5 param.dtime = datetime.datetime(2010, 10, 10, 0, 0) param.date = datetime.date(2010, 10, 10) param.bool1 = None param.bool2 = None param.color = 'red' param.choice = '16' param.mchoice2 = 'rect' param.floatarray = None param.mchoice3 = () param.mchoice1 = () param.dictionary = None
Advanced usage¶
The .. autodataset::
directive behavior can be modified using all
.. autoclass::
options, as well as the the following ones:
:showsig:
to show the constructor signature
:hideattr:
to hide the dataset attributes
:shownote: [n]
to add a note on how to instanciate the dataset with the firstn
items. Ifn
is not provided, all items will be shown.
:hidecreate:
to hide thecreate()
method documentation which is shown by default.
The following reST example shows how these options can be used.
.. autodataset:: autodoc_example.AutodocExampleParam2
:showsig:
:hideattr:
:hidecreate:
:shownote: 5
:members:
- class autodoc_example.AutodocExampleParam2(title: str | None = None, comment: str | None = None, icon: str = '', readonly: bool = False)¶
Example of a complete dataset with all possible items. Used as an autodoc example.
Note
To instanciate a new
AutodocExampleParam2
dataset, you can use the classmethodAutodocExampleParam2.create()
like this:AutodocExampleParam2.create(dir='/tmp/test_l009zrp5', a=2.3, b=5, c='default value', type=0, fname='/tmp/test_l009zrp5/tmp2rbf46am.csv', fnames='/tmp/test_l009zrp5/tmp2rbf46am.csv', fname_s='/tmp/test_l009zrp5/tmp288e7n4v.eta', string=None, text=None, float_slider=0.5, integer=5, dtime=datetime.datetime(2010, 10, 10, 0, 0), date=datetime.date(2010, 10, 10), bool1=None, bool2=None, color='red', choice='16', mchoice2='rect', floatarray=None, mchoice3=(), mchoice1=(), dictionary=None)
You can also first instanciate a default
AutodocExampleParam2
and then set the fields like this:param = AutodocExampleParam2() param.dir = '/tmp/test_l009zrp5' param.a = 2.3 param.b = 5 param.c = 'default value' param.type = 0 ...