Documenting your developments¶
Where should you document your developments? Well, at several places, indeed, depending on the documentation we are talking about:
Code documentation¶
This is quite easy indeed. It’s excellent practice to add
docstring to your
python code. The good part of it is that tools like pyDev can automatically
read it. Also your python shell can (try help()), and so does iPython
(just use ? for example). Python stores every docstring in
the special attribute __doc__.
Pylint will, by default, complain for every method/class/function left without a docstring.
Release documentation¶
Releases documentation can be found in 2 places: release notes, and github wiki:
- release notes are automatically created from the first comment in the pull requests, please describe the changes between BEGRINRELEASENOTES and ENDRELEASENOTES as presented by the template provided
- The github wiki can contain a section, for each DIRACGrid repository, highlighting update operations, for example the DIRAC releases notes are linked from the DIRAC wiki main page.
Full development documentation¶
As said at the beginning of this guide, this documentation is in git at
DIRAC/docs.
It is very easy to contribute to it, and you are welcome to do that. You don’t
even have to clone the repository: github lets you edit it online.
This documentation is written in RST and it is compiled using
sphinx.
Some parts of the documentation can use UML diagrams. They are generated from .uml files
with plantuml. Sphinx support plantuml but ReadTheDocs
didn’t, so you have to convert .uml in .png with java -jar plantuml.jar file.uml.
Component Options documentation¶
The agent, service and executor options are documented in their respective module docstring via literal include of their options in the ConfigTemplate.cfg:
.. literalinclude:: ../ConfigTemplate.cfg
:start-after: ##BEGIN MyComponent
:end-before: ##END
:dedent: 2
:caption: MyComponent options
Around the section in the ConfigTemplate.cfg configuring the component the ##BEGIN MyComponent and ##END tags need set so that the include is restricted to the section belonging to the component. The options :dedent: and :caption: are optional, but create a nicer output.