[PYTHON DOC-SIG] Templatising gendoc, and more.

Mark Hammond MHammond@skippinet.com.au
Tue, 18 Feb 1997 21:42:03 +1000


Couple of quick questions - how can a ni package provide doc strings?  Eg, a 
package named "xyz" is a directory, _not_ a file.  I added a 
convention to gendoc that a file called "__doc__" in a packages 
directory will be read, and treated as docstrings for the module 
itself (which makes lots of sense to me, as then you dont need to 
distribute it)
Also, I "flatten" the "__init__" module, so that all docstrings and 
methods are documented in the package itself - ie, __init__ never 
gets a mention in the docs.
Do these sound OK?

Secondly - by default, there are a few places it is assumed the file 
name of the generated file is the same as the object itself.  Thus, 
the module "a.b" is created as "a.b.html".  Is it worth making a 
change to that it is created as "a_b.html"?  Up until recently, even 
Python could not correctly parse the extension from a.b.html, so Im 
inclined to think it is.
2 ways to tackle this - unconditionally replace "." with "_" in 
object names, or allow the classes to have the concept of _2_ names - 
the objects name, and the generated file name.  The latter is more 
general, but touches more code...

Now, the main one.  This may sound a little wierd and hard, but here
goes anyway...

Something I didnt really like about gendoc was the way it enforced a 
"synopsis"/"description"/"See also" type format on your documentation.  
As I read about the StructuredText module that Jim did, what I really 
expected what that _my_ structure would be used for the 
documentation.  Eg, what I expected to be able to write was:
"""Some Module:

Description
  This is the desc
Known Bugs
  Lots and lots
See Also
  Some extra stuff
Synopsis
  At the bottom! :-)
"""
and I expected that my "See Also" stuff would automatically go into 
the "See Also" section on the Web page, and that a top-level "Known 
Bugs" section would appear in the HTML - it doesnt :-(

I have a few ideas on how you could do this.

My idea is basically to have 2 modes - a "template" mode, and
a "freeform" mode.  The (default?) "template" mode is much like now,
but would use a text file of "known" section names.  Eg, the
"default" template, which would generate doc identical to now would
be like:
Synopsis|<H2>%s</H2>|<P>
Description
See Also
[The stuff after the | could be optional, and defines how the heading 
itself it rendered, and also how para in the body is pre/a-pended.  
Thats off the top of my head - consider the concept, not my impl idea 
:-)

And someone else could change it if required for their documentation 
needs.

Free-form mode would still use "known" section names, but would use 
the top-level structure of the structured doc-string to determine the 
order and inclusion of sections.  Eg, in the example above, the 
"generated" see also entries (as now) would be appended/prepended to the 
"explicit" see also entries (which the module author specifies as 
relevant, but gendoc didnt), and no "synopsis" section at all would 
be generated (which may make sense for sample modules, for example, 
where an implication of importing the sample code is not correct)

Any comments on this?

Mark.
----------------------------------------------------------------------
Mark Hammond - MHammond@skippinet.com.au 
Check out Python - _the_ language for the Web/CGI/Windows/MFC/Unix/etc
<http://www.python.org> & <http://www.python.org/ftp/python/pythonwin>

_______________
DOC-SIG  - SIG for the Python Documentation Project

send messages to: doc-sig@python.org
administrivia to: doc-sig-request@python.org
_______________