[Python-checkins] CVS: python/nondist/peps pep-0216.txt,1.2,1.3
Moshe Zadka
python-dev@python.org
Sun, 5 Nov 2000 08:48:58 -0800
Update of /cvsroot/python/python/nondist/peps
In directory slayer.i.sourceforge.net:/tmp/cvs-serv13154
Modified Files:
pep-0216.txt
Log Message:
Added requirements and problems.
Index: pep-0216.txt
===================================================================
RCS file: /cvsroot/python/python/nondist/peps/pep-0216.txt,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** pep-0216.txt 2000/08/23 05:49:27 1.2
--- pep-0216.txt 2000/11/05 16:48:55 1.3
***************
*** 7,10 ****
--- 7,94 ----
Created: 31-Jul-2000
+ Abstract
+
+ Named Python objects, such as modules, classes and functions, have a
+ string attribute called __doc__. If the first expression inside
+ the definition is a literal string, that string is assigned
+ to the __doc__ attribute.
+
+ The __doc__ attribute is called a documentation string, or docstring.
+ It is often used to summarize the interface of the module, class or
+ function. However, since there is no common format for documentation
+ string, tools for extracting docstrings and transforming those into
+ documentation in a standard format (e.g., DocBook) have not sprang
+ up in abundance, and those that do exist are for the most part
+ unmaintained and unused.
+
+ Perl Documentation
+
+ In Perl, most modules are documented in a format called POD -- Plain
+ Old Documentation. This is an easy-to-type, very low level format
+ which integrates well with the Perl parser. Many tools exist to turn
+ POD documentation into other formats: info, HTML and man pages, among
+ others. However, in Perl, the information is not available at run-time.
+
+ Java Documentation
+
+ In Java, special comments before classes and functions function to
+ document the code. A program to extract these, and turn them into
+ HTML documentation is called javadoc, and is part of the standard
+ Java distribution. However, the only output format that is supported
+ is HTML, and JavaDoc has a very intimate relationship with HTML.
+
+ Python Docstring Goals
+
+ Python documentation string are easy to spot during parsing, and are
+ also available to the runtime interpreter. This double purpose is
+ a bit problematic, sometimes: for example, some are reluctant to have
+ too long docstrings, because they do not want to take much space in
+ the runtime. In addition, because of the current lack of tools, people
+ read objects' docstrings by "print"ing them, so a tendancy to make them
+ brief and free of markups has sprung up. This tendancy hinders writing
+ better documentation-extraction tools, since it causes docstrings to
+ contain little information, which is hard to parse.
+
+ High Level Solutions
+
+ To counter the objection that the strings take up place in the running
+ program, it is suggested that documentation extraction tools will
+ concatenate a maximum prefix of string literals which appear in the
+ beginning of a definition. The first of these will also be available
+ in the interactive interpreter, so it should contain a few summary
+ lines.
+
+ Docstring Format Goals
+
+ These are the goals for the docstring format, as discussed ad neasum
+ in the doc-sig.
+
+ 1. It must be easy to type with any standard text editor.
+ 2. It must be readable to the casual observer.
+ 3. It must not contain information which can be deduced from parsing
+ the module.
+ 4. It must contain sufficient information so it can be converted
+ to any reasonable markup format.
+ 5. It must be possible to write a module's entire documentation in
+ docstrings, without feeling hampered by the markup language.
+
+ Docstring Contents
+
+ For requirement 5. above, it is needed to specify what must be
+ in docstrings.
+
+ At least the following must be available:
+
+ a. A tag that means "this is a Python ``something'', guess what"
+ b. Tags that mean "this is a Python class/module/class var/instance var..."
+ c. An easy way to include Python source code/Python interactive sessions
+ d. Emphasis/bold
+ e. List/tables
+
+ Rejected Suggestions
+
+ XML -- it's very hard to type, and too cluttered to read it
+ comfortably.
+