[Bf-committers] Python API Documentation

neXyon nexyon at gmail.com
Mon Aug 16 17:46:26 CEST 2010


  Hi all!

During my GSoC project which I just merged, I implemented a new Python 
API documentation system that uses templating and gets documentation out 
of several different sources to unify them then by writing out Sphinx 
.rst files that can then be used to build an html or latex documentation 
with sphinx-build.

The problem (in my eyes) we have is the many different locations of 
documentation we have at the moment, if you look at 
source/blender/python/doc/sphinx_doc_gen.py you'll find out that it gets 
the documentation from three different places:

* bpy.types and bpy.operators are generated using the rna_info module
* the bge modules are handwritten rst files
* the other currently online modules are generated using the python 
docstrings
* there are still some modules like bgl that still aren't in the online 
documentation yet

Now there should be a unified solution and I have two possible solutions:

1) Have all documentation as docstrings:

Advantages:
* Docstrings can be read in the interactive console
* The documentation can be kept very near to the code
Disadvantages:
* They blow up binary size as for C modules all docstrings are in the binary
* They are not as easy to maintain and edit by dedicated documenters 
that are no blender coders with svn access

2) Have a database with a nice structure to store docs

Advantages:
* Easy to edit for everybody, there could be a web interface to edit 
docs directly
* Lower binary size
Disadvantages:
* No docstrings, so no direct documentation in the interpreter, although 
the help function could be overwritten to retrieve the docs from the DB
* Documentation and code are seperated, extra validation is needed to 
check completeness of the docs

Let the discussion begin. :)

Regards,
neXyon


More information about the Bf-committers mailing list