docstring-checkins Mailing List for Docstring Processing System (Page 16)
Status: Pre-Alpha
Brought to you by:
goodger
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(53) |
Sep
(54) |
Oct
(26) |
Nov
(27) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
(60) |
Feb
(85) |
Mar
(94) |
Apr
(40) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: David G. <go...@us...> - 2001-09-07 02:12:30
|
Update of /cvsroot/docstring/dps/dps/languages In directory usw-pr-cvs1:/tmp/cvs-serv622/dps/dps/languages Modified Files: en.py Log Message: - Changed node class names to node classes. Index: en.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/languages/en.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** en.py 2001/08/17 02:31:39 1.2 --- en.py 2001/09/07 02:12:28 1.3 *************** *** 12,15 **** --- 12,18 ---- + from dps import nodes + + class Stuff: *************** *** 31,65 **** """ ! parser.bibliofields = {'title': 'title', ! 'author': 'author', ! 'authors': 'authors', ! 'organization': 'organization', ! 'contact': 'contact', ! 'version': 'version', ! 'revision': 'revision', ! 'status': 'status', ! 'date': 'date', ! 'copyright': 'copyright',} parser.authorseps = [';', ','] ! parser.interpreted = {'package': 'package', ! 'module': 'module', ! 'class': 'inline_class', ! 'method': 'method', ! 'function': 'function', ! 'variable': 'variable', ! 'parameter': 'parameter', ! 'type': 'type', ! 'class attribute': 'class_attribute', ! 'classatt': 'class_attribute', ! 'instance attribute': 'instance_attribute', ! 'instanceatt': 'instance_attribute', ! 'module attribute': 'module_attribute', ! 'moduleatt': 'module_attribute', ! 'exception class': 'exception_class', ! 'exception': 'exception_class', ! 'warning class': 'warning_class', ! 'warning': 'warning_class',} parser.directives = {} --- 34,70 ---- """ ! parser.bibliofields = {'title': nodes.title, ! 'subtitle': nodes.subtitle, ! 'author': nodes.author, ! 'authors': nodes.authors, ! 'organization': nodes.organization, ! 'contact': nodes.contact, ! 'version': nodes.version, ! 'revision': nodes.revision, ! 'status': nodes.status, ! 'date': nodes.date, ! 'copyright': nodes.copyright, ! 'abstract': nodes.abstract} parser.authorseps = [';', ','] ! parser.interpreted = {'package': nodes.package, ! 'module': nodes.module, ! 'class': nodes.inline_class, ! 'method': nodes.method, ! 'function': nodes.function, ! 'variable': nodes.variable, ! 'parameter': nodes.parameter, ! 'type': nodes.type, ! 'class attribute': nodes.class_attribute, ! 'classatt': nodes.class_attribute, ! 'instance attribute': nodes.instance_attribute, ! 'instanceatt': nodes.instance_attribute, ! 'module attribute': nodes.module_attribute, ! 'moduleatt': nodes.module_attribute, ! 'exception class': nodes.exception_class, ! 'exception': nodes.exception_class, ! 'warning class': nodes.warning_class, ! 'warning': nodes.warning_class,} parser.directives = {} |
From: David G. <go...@us...> - 2001-09-07 02:10:33
|
Update of /cvsroot/docstring/dps/dps/parsers In directory usw-pr-cvs1:/tmp/cvs-serv32635/dps/dps/parsers Modified Files: model.py Log Message: - Added language module support. Index: model.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/parsers/model.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** model.py 2001/08/01 02:56:35 1.2 --- model.py 2001/09/07 02:10:30 1.3 *************** *** 4,14 **** class Parser: ! def __init__(self, warninglevel=1, errorlevel=3, language='en'): """Initialize the Parser instance.""" self.warninglevel = warninglevel self.errorlevel = errorlevel ! self.language = language def parse(self, inputstring): --- 4,20 ---- + from dps import utils + + class Parser: ! def __init__(self, warninglevel=1, errorlevel=3, languagecode='en', ! debug=0): """Initialize the Parser instance.""" self.warninglevel = warninglevel self.errorlevel = errorlevel ! self.languagecode = languagecode ! self.language = utils.language(languagecode) ! self.debug = debug def parse(self, inputstring): |
From: David G. <go...@us...> - 2001-09-07 02:08:44
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv32160/dps/dps Modified Files: nodes.py Log Message: - _Node's always true. - Changed .pprint() to .pformat(). - Added slice support to elements. - Added .findclass() & .findnonclass() methods. - Added support for auto-numbered footnotes. Index: nodes.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/nodes.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** nodes.py 2001/08/30 04:28:58 1.6 --- nodes.py 2001/09/07 02:08:41 1.7 *************** *** 12,20 **** import sys import xml.dom.minidom ! from types import StringType from UserString import MutableString class _Node: def asdom(self, dom=xml.dom.minidom): return self._dom_node(dom) --- 12,24 ---- import sys import xml.dom.minidom ! from types import IntType, SliceType, StringType, TupleType from UserString import MutableString class _Node: + def __nonzero__(self): + """_Node instances are always true.""" + return 1 + def asdom(self, dom=xml.dom.minidom): return self._dom_node(dom) *************** *** 52,56 **** return self.data ! def pprint(self, indent=' ', level=0): result = [] indent = indent * level --- 56,60 ---- return self.data ! def pformat(self, indent=' ', level=0): result = [] indent = indent * level *************** *** 155,172 **** if isinstance(key, StringType): return self.attributes[key] ! else: return self.children[key] def __setitem__(self, key, item): if isinstance(key, StringType): self.attributes[key] = item ! else: self.children[key] = item def __delitem__(self, key): if isinstance(key, StringType): del self.attributes[key] ! else: del self.children[key] def __add__(self, other): --- 159,194 ---- if isinstance(key, StringType): return self.attributes[key] ! elif isinstance(key, IntType): return self.children[key] + elif isinstance(key, SliceType): + assert key.step is None, 'cannot handle slice with stride' + return self.children[key.start:key.stop] + else: + raise TypeError, ('element index must be an integer, a slice, or ' + 'an attribute name string') def __setitem__(self, key, item): if isinstance(key, StringType): self.attributes[key] = item ! elif isinstance(key, IntType): self.children[key] = item + elif isinstance(key, SliceType): + assert key.step is None, 'cannot handle slice with stride' + self.children[key.start:key.stop] = item + else: + raise TypeError, ('element index must be an integer, a slice, or ' + 'an attribute name string') def __delitem__(self, key): if isinstance(key, StringType): del self.attributes[key] ! elif isinstance(key, IntType): del self.children[key] + elif isinstance(key, SliceType): + assert key.step is None, 'cannot handle slice with stride' + del self.children[key.start:key.stop] + else: + raise TypeError, ('element index must be an integer, a simple ' + 'slice, or an attribute name string') def __add__(self, other): *************** *** 219,226 **** self.children.remove(item) ! def pprint(self, indent=' ', level=0): if self.children: return ''.join(['%s%s\n' % (indent * level, self.starttag())] + ! [c.pprint(indent, level+1) for c in self.children] + ['%s%s\n' % (indent * level, self.endtag())]) else: --- 241,282 ---- self.children.remove(item) ! def findclass(self, childclass, start=0, end=sys.maxint): ! """ ! Return the index of the first child whose class matches `childclass`. ! ! `childclass` may also be a tuple of node classes, in which case any ! of the classes may match. ! """ ! if not isinstance(childclass, TupleType): ! childclass = (childclass,) ! for index in range(start, min(len(self), end)): ! for c in childclass: ! if isinstance(self[index], c): ! return index ! return None ! ! def findnonclass(self, childclass, start=0, end=sys.maxint): ! """ ! Return the index of the first child not matching `childclass`. ! ! `childclass` may also be a tuple of node classes, in which case none ! of the classes may match. ! """ ! if not isinstance(childclass, TupleType): ! childclass = (childclass,) ! for index in range(start, min(len(self), end)): ! match = 0 ! for c in childclass: ! if isinstance(self[index], c): ! match = 1 ! if not match: ! return index ! return None ! ! def pformat(self, indent=' ', level=0): if self.children: return ''.join(['%s%s\n' % (indent * level, self.starttag())] + ! [child.pformat(indent, level+1) ! for child in self.children] + ['%s%s\n' % (indent * level, self.endtag())]) else: *************** *** 260,263 **** --- 316,321 ---- self.indirectlinks = {} self.refnames = {} + self.autofootnotes = [] + self.autofootnoterefs = [] self.errorhandler = errorhandler *************** *** 334,337 **** --- 392,403 ---- self.explicitlinks.setdefault(name, []).append(linknode) linknode['name'] = name + + def addautofootnote(self, name, footnotenode): + footnotenode['auto'] = '1' + self.autofootnotes.append((name, footnotenode)) + + def addautofootnoteref(self, refname, refnode): + refnode['auto'] = '1' + self.autofootnoterefs.append((refname, refnode)) |
From: David G. <go...@us...> - 2001-09-07 02:05:24
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv31616/dps/dps Modified Files: test_nodes.py Log Message: updated Index: test_nodes.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/test_nodes.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** test_nodes.py 2001/08/23 03:55:34 1.2 --- test_nodes.py 2001/09/07 02:05:22 1.3 *************** *** 36,41 **** self.assertEquals(self.text.astext(), 'Line 1.\nLine 2.') ! def test_pprint(self): ! self.assertEquals(self.text.pprint(), 'Line 1.\nLine 2.\n') --- 36,41 ---- self.assertEquals(self.text.astext(), 'Line 1.\nLine 2.') ! def test_pformat(self): ! self.assertEquals(self.text.pformat(), 'Line 1.\nLine 2.\n') *************** *** 55,59 **** self.assertEquals(dom.toxml(), '<_Element attr="1"/>') dom.unlink() ! self.assertEquals(element.pprint(), '<_Element attr="1"/>\n') def test_withtext(self): --- 55,59 ---- self.assertEquals(dom.toxml(), '<_Element attr="1"/>') dom.unlink() ! self.assertEquals(element.pformat(), '<_Element attr="1"/>\n') def test_withtext(self): *************** *** 72,76 **** '<_Element attr="1">text\nmore</_Element>') dom.unlink() ! self.assertEquals(element.pprint(), """\ <_Element attr="1"> --- 72,76 ---- '<_Element attr="1">text\nmore</_Element>') dom.unlink() ! self.assertEquals(element.pformat(), """\ <_Element attr="1"> |
From: David G. <go...@us...> - 2001-09-07 02:03:16
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv31198/dps/dps Modified Files: utils.py Log Message: - Added named methods (aliases to numbered system_warning calls) to Errorist. - Added language module support. Index: utils.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/utils.py,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** utils.py 2001/08/23 03:56:27 1.2 --- utils.py 2001/09/07 02:03:14 1.3 *************** *** 40,43 **** --- 40,55 ---- return sw + def information(self, comment=None, children=[]): + return self.system_warning(0, comment, children) + + def warning(self, comment=None, children=[]): + return self.system_warning(1, comment, children) + + def error(self, comment=None, children=[]): + return self.system_warning(2, comment, children) + + def severe(self, comment=None, children=[]): + return self.system_warning(3, comment, children) + def strong_system_warning(self, admonition, comment, sourcetext=None): p = nodes.paragraph() *************** *** 48,49 **** --- 60,76 ---- children.append(nodes.literal_block('', sourcetext)) return self.system_warning(3, children=children) + + + languages = {} + + def language(languagecode): + if languages.has_key(languagecode): + return languages[languagecode] + try: + module = getattr(__import__('dps.languages', globals(), locals(), + [languagecode]), + languagecode) + except: + raise + languages[languagecode] = module + return module |
From: David G. <go...@us...> - 2001-09-07 01:52:00
|
Update of /cvsroot/docstring/dps/spec In directory usw-pr-cvs1:/tmp/cvs-serv29185/dps/spec Modified Files: gpdi.dtd Log Message: - Made document subtitle dependent on the existence of a title. - Moved 'abstract' into the bibliographic elements section. - Added "auto" attribute to footnotes after all. Because it's explicit, and the right thing to do. Index: gpdi.dtd =================================================================== RCS file: /cvsroot/docstring/dps/spec/gpdi.dtd,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** gpdi.dtd 2001/09/01 15:02:06 1.11 --- gpdi.dtd 2001/09/07 01:51:58 1.12 *************** *** 148,152 **** <!-- Optional elements may be generated by internal processing. --> <!ELEMENT document ! (title?, subtitle?, (%bibliographic.elements;)*, abstract?, %structure.model;)> <!ATTLIST document %basic.atts;> --- 148,152 ---- <!-- Optional elements may be generated by internal processing. --> <!ELEMENT document ! ((title, subtitle?)?, (%bibliographic.elements;)*, abstract?, %structure.model;)> <!ATTLIST document %basic.atts;> *************** *** 192,196 **** --- 192,199 ---- <!ATTLIST copyright %basic.atts;> + <!ELEMENT abstract (%body.elements;)+> + <!ATTLIST abstract %basic.atts;> + <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *************** *** 199,205 **** --> - <!ELEMENT abstract (%body.elements;)+> - <!ATTLIST abstract %basic.atts;> - <!ELEMENT section (title, %structure.model;)> <!ATTLIST section %basic.atts;> --- 202,205 ---- *************** *** 320,326 **** <!ATTLIST important %basic.atts;> - <!-- A footnote with no label is auto-numbered. --> <!ELEMENT footnote (label?, (%body.elements;)+)> ! <!ATTLIST footnote %basic.atts;> <!ELEMENT label (#PCDATA)> --- 320,327 ---- <!ATTLIST important %basic.atts;> <!ELEMENT footnote (label?, (%body.elements;)+)> ! <!ATTLIST footnote ! %basic.atts; ! auto %yesorno; #IMPLIED> <!ELEMENT label (#PCDATA)> |
From: David G. <go...@us...> - 2001-09-05 02:40:29
|
Update of /cvsroot/docstring/dps In directory usw-pr-cvs1:/tmp/cvs-serv6136/dps Modified Files: HISTORY.txt Log Message: updated Index: HISTORY.txt =================================================================== RCS file: /cvsroot/docstring/dps/HISTORY.txt,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** HISTORY.txt 2001/09/01 15:03:07 1.10 --- HISTORY.txt 2001/09/05 02:40:26 1.11 *************** *** 101,105 **** - Moved option_list and doctest_block from gpdi.dtd. ! * spec/python-mode.txt: Added to project (from reStructuredText). --- 101,106 ---- - Moved option_list and doctest_block from gpdi.dtd. ! * spec/python-docstring-mode.txt: Added to project (from ! reStructuredText). |
From: David G. <go...@us...> - 2001-09-05 02:38:58
|
Update of /cvsroot/docstring/dps/spec In directory usw-pr-cvs1:/tmp/cvs-serv5820/dps/spec Modified Files: dps-notes.txt Log Message: updated Index: dps-notes.txt =================================================================== RCS file: /cvsroot/docstring/dps/spec/dps-notes.txt,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** dps-notes.txt 2001/08/28 03:28:53 1.9 --- dps-notes.txt 2001/09/05 02:38:55 1.10 *************** *** 13,21 **** - Fill in the blanks in API details. - Rework PEP 257, separating style from spec from tools, wrt DPS. See Doc-SIG from 2001-06-19/20. ! - PEP 256: Draw the framework diagram properly as a graphic (once PEPs ! support graphics !-). - Document! --- 13,30 ---- - Fill in the blanks in API details. + - Specify the nodes.py internal data structure implementation. + + [Tibs:] Eventually we need to have direct documentation in + there on how it all hangs together - the DTD is not enough + (indeed, is it still meant to be correct?). + - Rework PEP 257, separating style from spec from tools, wrt DPS. See Doc-SIG from 2001-06-19/20. ! - PEP 256: ! ! - Incorporate "modes" (one or two sets). ! - Draw the framework diagram properly as a graphic (once PEPs ! support graphics !-). - Document! *************** *** 78,81 **** --- 87,177 ---- See python-dev/docstring-develop thread "AST mining", started on 2001-08-14. + + + Modes and Styles + ================ + + The Python docstring mode model that's evolving in my mind goes + something like this: + + 1. Extract the docstring/namespace tree from the module(s) and/or + package(s). + + 2. Run the parser on each docstring in turn, producing a forest of + trees (internal data structure as per nodes.py). + + 3. Run various transformations on the individual docstring trees. + Examples: resolving cross-references; resolving hyperlinks; + footnote auto-numbering; first field list -> bibliographic + elements. + + 4. Join the docstring trees together into a single tree, running more + transformations (such as creating various sections like "Module + Attributes", "Functions", "Classes", "Class Attributes", etc.; see + the DPS spec/ppdi.dtd). + + 5. Pass the resulting unified tree to the output formatter. + + I've had trouble reconciling the roles of input parser and output + formatter with the idea of "modes". Does the mode govern the + tranformation of the input, the output, or both? Perhaps the mode + should be split into two. + + For example, say the source of our input is a Python module. Our + "input mode" should be "Python Docstring Mode". It discovers (from + ``__docformat__``) that the input parser is "reStructuredText". If we + want HTML, we'll specify the "HTML" output formatter. But there's a + piece missing. What *kind* or *style* of HTML output do we want? + PyDoc-style, LibRefMan style, etc. (many people will want to specify + and control their own style). Is the output style specific to a + particular output format (XML, HTML, etc.)? Is the style specific to + the input mode? Or can/should they be independent? + + I envision interaction between the input parser, an "input mode" + (would control steps 1, 2, & 3), a "transformation style" (would + control step 4), and the output formatter. The same intermediate data + format would be used between each of these, gaining detail as it + progresses. + + This requires thought. + + Tony's contribution: + + OK - my model is not dissimilar, but goes like: + + 1. Parse the Python module(s) [remembering we may have a package] + This locates the docstrings, amongst other things. + + 2. Trim the tree to lose stuff we didn't need (!). + + 3. Parse the docstrings (this might, instead, be done at the time + that each docstring is "discovered"). + + 4. Integrate the docstring into the tree - this *may* be as simple + as having "thing.docstring = <docstring instance>" + + 5. Perform internal resolutions on the docstring (footnotes, etc.) + + 6. Perform intra-module/package resolutions on the docstring + (so this is when we work out that `Fred` in *this* docstring + refers to class Fred over here in the datastructure). + + 7. Format. + + ... + + A mode needs to: + + 1. Provide plugins for parsing - this *may* go so far as to + subsume the DPS functionality into a new program, as I'm doing + for Python. In this case the "plugin" for parsing may be + virtual - I just need to ferret around in the docstring looking + for things that are already there, perhaps. + + 2. Provide plugins for formatting - again, these may subsume a + DPS parser process. In the Python case, I clearly want to *use* + the normal HTML parser for HTML output, but with extra support + "around it" for the Python specific infrastructure. + |
From: David G. <go...@us...> - 2001-09-05 02:34:02
|
Update of /cvsroot/docstring/dps/spec In directory usw-pr-cvs1:/tmp/cvs-serv4864/dps/spec Added Files: python-docstring-mode.txt Log Message: *** empty log message *** --- NEW FILE: python-docstring-mode.txt --- ======================= Python Docstring Mode ======================= :Author: David Goodger :Contact: go...@us... :Revision: $Revision: 1.1 $ :Date: $Date: 2001/09/05 02:33:58 $ This document details Python-specific interpretations of the `reStructuredText Markup Specification`_, part of the reStructuredText_ project, in the context of the `Python Docstring Processing System`_. For definitive element hierarchy details, see the "Python Plaintext Document Interface DTD" XML document type definition, ppdi.dtd_ (which modifies the generic gpdi.dtd_). Descriptions below list 'DTD elements' (XML 'generic identifiers' or tag names) corresponding to syntax constructs. Interpreted Text ================ DTD elements: package, module, class, method, function, module_attribute, class_attribute, instance_attribute, variable, parameter, type, exception_class, warning_class. In Python docstrings, interpreted text is used to classify and mark up program identifiers, such as the names of variables, functions, classes, and modules. If the identifier alone is given, its role is inferred implicitly according to the Python namespace lookup rules. For functions and methods (even when dynamically assigned), parentheses ('()') may be included:: This function uses `another()` to do its work. For class, instance and module attributes, dotted identifiers are used when necessary:: class Keeper(Storer): """ Extend `Storer`. Class attribute `instances` keeps track of the number of `Keeper` objects instantiated. """ instances = 0 """How many `Keeper` objects are there?""" def __init__(self): """ Extend `Storer.__init__()` to keep track of instances. Keep count in `self.instances` and data in `self.data`. """ Storer.__init__(self) self.instances += 1 self.data = [] """Store data in a list, most recent last.""" def storedata(self, data): """ Extend `Storer.storedata()`; append new `data` to a list (in `self.data`). """ self.data = data To classify identifiers explicitly, the role is given along with the identifier in either prefix or suffix form:: Use method:`Keeper.storedata` to store the object's data in the `Keeper.data`:instance_attribute. The role may be one of 'package', 'module', 'class', 'method', 'function', 'module_attribute', 'class_attribute', 'instance_attribute', 'variable', 'parameter', 'type', 'exception_class', 'exception', 'warning_class', or 'warning'. Other roles may be defined. .. _reStructuredText Markup Specification: http://structuredtext.sourceforge.net/spec/reStructuredText.txt .. _reStructuredText: http://structuredtext.sourceforge.net .. _Python Docstring Processing System: http://docstring.sourceforge.net .. _ppdi.dtd: http://docstring.sourceforge.net/spec/ppdi.dtd .. _gpdi.dtd: http://docstring.sourceforge.net/spec/gpdi.dtd Local Variables: mode: indented-text indent-tabs-mode: nil fill-column: 70 End: |
From: David G. <go...@us...> - 2001-09-01 15:03:10
|
Update of /cvsroot/docstring/dps In directory usw-pr-cvs1:/tmp/cvs-serv24409/dps Modified Files: HISTORY.txt Log Message: updated Index: HISTORY.txt =================================================================== RCS file: /cvsroot/docstring/dps/HISTORY.txt,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** HISTORY.txt 2001/08/28 03:28:39 1.9 --- HISTORY.txt 2001/09/01 15:03:07 1.10 *************** *** 48,51 **** --- 48,52 ---- - Extended _Element.__iadd__ (``+=``) to lists of nodes. - Duplicate hyperlink names -> dupname attribute. + - Allow any DOM implementation from ``asdom()`` method. (I think.) * dps/roman.py: Added to project. Written by and courtesy of Mark *************** *** 92,95 **** --- 93,98 ---- - Added dupname attribute to %basic.atts; for duplicate names. - Added support for auto-numbered footnotes. + - Added 'morecols' attribute to table entries (<entry>), for simpler + column span indication. * spec/pdpi.dtd: |
From: David G. <go...@us...> - 2001-09-01 15:02:11
|
Update of /cvsroot/docstring/dps/spec In directory usw-pr-cvs1:/tmp/cvs-serv23871/dps/spec Modified Files: gpdi.dtd Log Message: - Added 'morecols' attribute to table entries (<entry>), for simpler column span indication. Index: gpdi.dtd =================================================================== RCS file: /cvsroot/docstring/dps/spec/gpdi.dtd,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** gpdi.dtd 2001/08/28 03:21:05 1.10 --- gpdi.dtd 2001/09/01 15:02:06 1.11 *************** *** 135,139 **** <!ENTITY % tbl.row.att " %basic.atts; "> <!ENTITY % tbl.entry.mdl " (%body.elements;)* "> ! <!ENTITY % tbl.entry.att " %basic.atts; "> --- 135,141 ---- <!ENTITY % tbl.row.att " %basic.atts; "> <!ENTITY % tbl.entry.mdl " (%body.elements;)* "> ! <!ENTITY % tbl.entry.att ! " %basic.atts; ! morecols NMTOKEN #IMPLIED "> |
From: David G. <go...@us...> - 2001-08-30 04:29:02
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv12719/dps/dps Modified Files: nodes.py Log Message: - Allow any DOM implementation from ``asdom()`` method. (I think.) Index: nodes.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/nodes.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** nodes.py 2001/08/28 03:27:31 1.5 --- nodes.py 2001/08/30 04:28:58 1.6 *************** *** 11,15 **** import sys ! import xml.dom.minidom as dom from types import StringType from UserString import MutableString --- 11,15 ---- import sys ! import xml.dom.minidom from types import StringType from UserString import MutableString *************** *** 17,24 **** class _Node: ! def asdom(self): ! return self._dom_node() ! def _dom_node(self): pass --- 17,24 ---- class _Node: ! def asdom(self, dom=xml.dom.minidom): ! return self._dom_node(dom) ! def _dom_node(self, dom): pass *************** *** 43,47 **** return '<%s: %s>' % (self.tagName, data) ! def _dom_node(self): return dom.Text(self.data) --- 43,47 ---- return '<%s: %s>' % (self.tagName, data) ! def _dom_node(self, dom): return dom.Text(self.data) *************** *** 103,112 **** """The element generic identifier, usually the class name.""" ! def _dom_node(self): element = dom.Element(self.tagName) for attribute, value in self.attributes.items(): element.setAttribute(attribute, value) for child in self.children: ! element.appendChild(child._dom_node()) return element --- 103,112 ---- """The element generic identifier, usually the class name.""" ! def _dom_node(self, dom): element = dom.Element(self.tagName) for attribute, value in self.attributes.items(): element.setAttribute(attribute, value) for child in self.children: ! element.appendChild(child._dom_node(dom)) return element *************** *** 262,266 **** self.errorhandler = errorhandler ! def asdom(self): domroot = dom.Document() domroot.appendChild(_Element._rooted_dom_node(self, domroot)) --- 262,266 ---- self.errorhandler = errorhandler ! def asdom(self, dom=xml.dom.minidom): domroot = dom.Document() domroot.appendChild(_Element._rooted_dom_node(self, domroot)) |
From: David G. <go...@us...> - 2001-08-28 03:28:55
|
Update of /cvsroot/docstring/dps/spec In directory usw-pr-cvs1:/tmp/cvs-serv26636/dps/spec Modified Files: dps-notes.txt Log Message: updated Index: dps-notes.txt =================================================================== RCS file: /cvsroot/docstring/dps/spec/dps-notes.txt,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** dps-notes.txt 2001/08/23 03:52:29 1.8 --- dps-notes.txt 2001/08/28 03:28:53 1.9 *************** *** 33,36 **** --- 33,43 ---- 'Suggestions for reST "modes"' as a base. + - Write modules for common transformations, such as: + + - Resolving auto-numbered footnotes & references. + - Resolving internal cross-references and indirect hyperlinks. + + These transformations may be turned on or off by individual modes. + - Ask Python-dev for opinions (GvR for a pronouncement) on special variables (__author__, __version__, etc.): convenience vs. namespace |
From: David G. <go...@us...> - 2001-08-28 03:28:42
|
Update of /cvsroot/docstring/dps In directory usw-pr-cvs1:/tmp/cvs-serv26545/dps Modified Files: HISTORY.txt Log Message: updated Index: HISTORY.txt =================================================================== RCS file: /cvsroot/docstring/dps/HISTORY.txt,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** HISTORY.txt 2001/08/25 01:51:03 1.8 --- HISTORY.txt 2001/08/28 03:28:39 1.9 *************** *** 47,50 **** --- 47,51 ---- - Added docstrings to _Element. - Extended _Element.__iadd__ (``+=``) to lists of nodes. + - Duplicate hyperlink names -> dupname attribute. * dps/roman.py: Added to project. Written by and courtesy of Mark *************** *** 53,57 **** * dps/statemachine.py (1.3): ! - Fixed bug in StateMachineWS.getknownindented(). - Cleaned up & updated. - Fixed bug in StateMachine.getunindented(). --- 54,60 ---- * dps/statemachine.py (1.3): ! - Fixed bugs in StateMachineWS.getknownindented(). ! - Added trimming of blank first lines to ! StateMachineWS.getfirstknownindented(). - Cleaned up & updated. - Fixed bug in StateMachine.getunindented(). *************** *** 88,91 **** --- 91,95 ---- - Added classifier element to definition_list_item. - Added dupname attribute to %basic.atts; for duplicate names. + - Added support for auto-numbered footnotes. * spec/pdpi.dtd: |
From: David G. <go...@us...> - 2001-08-28 03:27:33
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv26154/dps/dps Modified Files: nodes.py Log Message: - Duplicate hyperlink names -> dupname attribute. Index: nodes.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/nodes.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** nodes.py 2001/08/25 01:44:16 1.4 --- nodes.py 2001/08/28 03:27:31 1.5 *************** *** 274,280 **** or self.implicitlinks.has_key(name): sw = self.errorhandler.system_warning( ! 0, 'duplicate implicit link name: "%s"' % name) innode += sw self.clearlinknames(name, self.implicitlinks) self.implicitlinks.setdefault(name, []).append(linknode) else: --- 274,281 ---- or self.implicitlinks.has_key(name): sw = self.errorhandler.system_warning( ! 0, 'Duplicate implicit link name: "%s"' % name) innode += sw self.clearlinknames(name, self.implicitlinks) + linknode['dupname'] = name self.implicitlinks.setdefault(name, []).append(linknode) else: *************** *** 287,299 **** if self.explicitlinks.has_key(name): sw = self.errorhandler.system_warning( ! 1, 'duplicate explicit link name: "%s"' % name) innode += sw self.clearlinknames(name, self.explicitlinks, self.implicitlinks, self.indirectlinks) self.explicitlinks.setdefault(name, []).append(linknode) return elif self.implicitlinks.has_key(name): sw = self.errorhandler.system_warning( ! 0, 'duplicate implicit link name: "%s"' % name) innode += sw self.clearlinknames(name, self.implicitlinks) --- 288,301 ---- if self.explicitlinks.has_key(name): sw = self.errorhandler.system_warning( ! 1, 'Duplicate explicit link name: "%s"' % name) innode += sw self.clearlinknames(name, self.explicitlinks, self.implicitlinks, self.indirectlinks) + linknode['dupname'] = name self.explicitlinks.setdefault(name, []).append(linknode) return elif self.implicitlinks.has_key(name): sw = self.errorhandler.system_warning( ! 0, 'Duplicate implicit link name: "%s"' % name) innode += sw self.clearlinknames(name, self.implicitlinks) *************** *** 305,308 **** --- 307,311 ---- for node in linkdict.get(name, []): if node.has_key('name'): + node['dupname'] = node['name'] del node['name'] *************** *** 311,319 **** def addindirectlink(self, name, reference, linknode, innode): - #print >>sys.stderr, 'Adding indirect link: %s -> %s' % (name, reference) - #print >>sys.stderr, 'self.indirectlinks=%r' % self.indirectlinks - #print >>sys.stderr, 'self.explicitlinks=%r' % self.explicitlinks if self.explicitlinks.has_key(name): - #print >>sys.stderr, "already has explicit link" level = 0 for t in self.explicitlinks.get(name, []): --- 314,318 ---- *************** *** 322,326 **** break sw = self.errorhandler.system_warning( ! level, 'duplicate indirect link name: "%s"' % name) innode += sw self.clearlinknames(name, self.explicitlinks, self.indirectlinks, --- 321,325 ---- break sw = self.errorhandler.system_warning( ! level, 'Duplicate indirect link name: "%s"' % name) innode += sw self.clearlinknames(name, self.explicitlinks, self.indirectlinks, *************** *** 329,333 **** print >>sys.stderr, "already has explicit link" sw = self.errorhandler.system_warning( ! 0, 'duplicate implicit link name: "%s"' % name) innode += sw self.clearlinknames(name, self.implicitlinks) --- 328,332 ---- print >>sys.stderr, "already has explicit link" sw = self.errorhandler.system_warning( ! 0, 'Duplicate implicit link name: "%s"' % name) innode += sw self.clearlinknames(name, self.implicitlinks) |
From: David G. <go...@us...> - 2001-08-28 03:21:08
|
Update of /cvsroot/docstring/dps/spec In directory usw-pr-cvs1:/tmp/cvs-serv24351/dps/spec Modified Files: gpdi.dtd Log Message: - Support for auto-numbered footnotes. Index: gpdi.dtd =================================================================== RCS file: /cvsroot/docstring/dps/spec/gpdi.dtd,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** gpdi.dtd 2001/08/25 01:45:27 1.9 --- gpdi.dtd 2001/08/28 03:21:05 1.10 *************** *** 318,324 **** <!ATTLIST important %basic.atts;> ! <!ELEMENT footnote (label, (%body.elements;)+)> <!ATTLIST footnote %basic.atts;> <!ELEMENT target (#PCDATA)> <!ATTLIST target %basic.atts;> --- 318,328 ---- <!ATTLIST important %basic.atts;> ! <!-- A footnote with no label is auto-numbered. --> ! <!ELEMENT footnote (label?, (%body.elements;)+)> <!ATTLIST footnote %basic.atts;> + <!ELEMENT label (#PCDATA)> + <!ATTLIST label %basic.atts;> + <!ELEMENT target (#PCDATA)> <!ATTLIST target %basic.atts;> *************** *** 335,341 **** %fixedspace.att;> - <!ELEMENT label (#PCDATA)> - <!ATTLIST label %basic.atts;> - <!ELEMENT figure (caption?, graphic, legend?)> <!ATTLIST figure %basic.atts;> --- 339,342 ---- *************** *** 390,394 **** <!ATTLIST footnote_reference %basic.atts; ! %link.atts;> <!-- Also used in `figure`. --> --- 391,396 ---- <!ATTLIST footnote_reference %basic.atts; ! %link.atts; ! auto %yesorno; #IMPLIED> <!-- Also used in `figure`. --> |
From: David G. <go...@us...> - 2001-08-25 03:55:17
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv28057/dps/dps Modified Files: statemachine.py Log Message: - Fixed a bug in StateMachineWS.getknownindented(), for blank first lines. - Added trimming of blank first lines to StateMachineWS.getfirstknownindented(). Index: statemachine.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/statemachine.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** statemachine.py 2001/08/25 01:47:48 1.6 --- statemachine.py 2001/08/25 03:55:14 1.7 *************** *** 726,736 **** """ offset = self.abslineoffset() ! if self.line[indent:]: ! indented = [self.line[indent:]] ! else: ! indented = [] for line in self.inputlines[self.lineoffset + 1:]: if line[:indent].strip(): ! blankfinish = len(indented) and not indented[-1].strip() break indented.append(line[indent:]) --- 726,733 ---- """ offset = self.abslineoffset() ! indented = [self.line[indent:]] for line in self.inputlines[self.lineoffset + 1:]: if line[:indent].strip(): ! blankfinish = not indented[-1].strip() and len(indented) > 1 break indented.append(line[indent:]) *************** *** 741,744 **** --- 738,744 ---- while indented and not indented[-1].strip(): indented.pop() + while indented and not indented[0].strip(): + indented.pop(0) + offset += 1 return indented, offset, blankfinish *************** *** 764,767 **** --- 764,770 ---- while indented and not indented[-1].strip(): indented.pop() + while indented and not indented[0].strip(): + indented.pop(0) + offset += 1 return indented, indent, offset, blankfinish |
From: David G. <go...@us...> - 2001-08-25 01:51:06
|
Update of /cvsroot/docstring/dps In directory usw-pr-cvs1:/tmp/cvs-serv9143/dps Modified Files: HISTORY.txt Log Message: updated Index: HISTORY.txt =================================================================== RCS file: /cvsroot/docstring/dps/HISTORY.txt,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** HISTORY.txt 2001/08/23 03:59:30 1.7 --- HISTORY.txt 2001/08/25 01:51:03 1.8 *************** *** 43,47 **** --- 43,50 ---- - Added vms_option. + - Added classifier. - Fixed link bookkeeping. + - Added docstrings to _Element. + - Extended _Element.__iadd__ (``+=``) to lists of nodes. * dps/roman.py: Added to project. Written by and courtesy of Mark *************** *** 53,56 **** --- 56,60 ---- - Cleaned up & updated. - Fixed bug in StateMachine.getunindented(). + - Added form feed & vertical tab conversion to string2lines. * dps/parsers/model.py: *************** *** 81,85 **** - Changed field_argument's model to PCDATA. - Added option_list and doctest_block from ppdi.dtd. ! - Added vms_option. - Added dupname attribute to %basic.atts; for duplicate names. --- 85,90 ---- - Changed field_argument's model to PCDATA. - Added option_list and doctest_block from ppdi.dtd. ! - Added vms_option element to option. ! - Added classifier element to definition_list_item. - Added dupname attribute to %basic.atts; for duplicate names. *************** *** 176,182 **** ! Local Variables: ! mode: indented-text ! indent-tabs-mode: nil ! fill-column: 70 ! End: --- 181,188 ---- ! .. ! Local Variables: ! mode: indented-text ! indent-tabs-mode: nil ! fill-column: 70 ! End: |
From: David G. <go...@us...> - 2001-08-25 01:47:50
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv8412/dps/dps Modified Files: statemachine.py Log Message: - Added form feed & vertical tab conversion to string2lines. Index: statemachine.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/statemachine.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** statemachine.py 2001/08/23 03:59:03 1.5 --- statemachine.py 2001/08/25 01:47:48 1.6 *************** *** 109,113 **** 'UnexpectedIndentationError', 'string2lines', 'extractindented'] ! import sys, re --- 109,113 ---- 'UnexpectedIndentationError', 'string2lines', 'extractindented'] ! import sys, re, string *************** *** 931,935 **** ! def string2lines(astring, tabwidth=8): """ Return a list of one-line strings with tabs expanded and no newlines. --- 931,937 ---- ! _whitespace_conversion_table = string.maketrans('\v\f', ' ') ! ! def string2lines(astring, tabwidth=8, convertwhitespace=0): """ Return a list of one-line strings with tabs expanded and no newlines. *************** *** 942,946 **** --- 944,951 ---- - `astring`: a multi-line string. - `tabwidth`: the number of columns between tab stops. + - `convertwhitespace`: convert form feeds and vertical tabs to spaces? """ + if convertwhitespace: + astring = astring.translate(_whitespace_conversion_table) return [s.expandtabs(tabwidth) for s in astring.splitlines()] |
From: David G. <go...@us...> - 2001-08-25 01:45:29
|
Update of /cvsroot/docstring/dps/spec In directory usw-pr-cvs1:/tmp/cvs-serv8116/dps/spec Modified Files: gpdi.dtd Log Message: - Added ``classifier``. Index: gpdi.dtd =================================================================== RCS file: /cvsroot/docstring/dps/spec/gpdi.dtd,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** gpdi.dtd 2001/08/23 03:52:51 1.8 --- gpdi.dtd 2001/08/25 01:45:27 1.9 *************** *** 234,242 **** <!ATTLIST definition_list %basic.atts;> ! <!ELEMENT definition_list_item (term, definition)> <!ATTLIST definition_list_item %basic.atts;> <!ELEMENT term %text.model;> <!ATTLIST term %basic.atts;> <!ELEMENT definition (%body.elements;)+> --- 234,245 ---- <!ATTLIST definition_list %basic.atts;> ! <!ELEMENT definition_list_item (term, classifier?, definition)> <!ATTLIST definition_list_item %basic.atts;> <!ELEMENT term %text.model;> <!ATTLIST term %basic.atts;> + + <!ELEMENT classifier %text.model;> + <!ATTLIST classifier %basic.atts;> <!ELEMENT definition (%body.elements;)+> |
From: David G. <go...@us...> - 2001-08-25 01:44:19
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv7921/dps/dps Modified Files: nodes.py Log Message: - Added docstrings to ``_Element``. - Extended ``+=`` to lists of nodes. - Added ``classifier``. Index: nodes.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/nodes.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** nodes.py 2001/08/23 03:55:19 1.3 --- nodes.py 2001/08/25 01:44:16 1.4 *************** *** 62,65 **** --- 62,90 ---- class _Element(_Node): + """ + `_Element` is the superclass to all specific elements. + + Elements contain attributes and child nodes. Elements emulate dictionaries + for attributes, indexing by attribute name (a string). To set the + attribute 'att' to 'value', do:: + + element['att'] = 'value' + + Elements also emulate lists for child nodes (element nodes and/or text + nodes), indexing by integer. To get the first child node, use:: + + element[0] + + Elements may be constructed using the ``+=`` operator. To add one new + child node to element, do:: + + element += node + + To add a list of multiple child nodes at once, use the same ``+=`` + operator:: + + element += [node1, node2] + """ + childtextsep = '\n\n' """Separator for child nodes, used by `astext()` method.""" *************** *** 67,73 **** --- 92,105 ---- def __init__(self, rawsource='', *children, **attributes): self.rawsource = rawsource + """The raw text from which this element was constructed.""" + self.children = list(children) + """List of child nodes (elements and/or text).""" + self.attributes = attributes + """Dictionary of attribute {name: value}.""" + self.tagName = self.__class__.__name__ + """The element generic identifier, usually the class name.""" def _dom_node(self): *************** *** 145,151 **** def __iadd__(self, other): ! if other is not None: ! assert isinstance(other, _Node) self.children.append(other) return self --- 177,185 ---- def __iadd__(self, other): ! """Append a node or a list of nodes to `self.children`.""" ! if isinstance(other, _Node): self.children.append(other) + elif other is not None: + self.children.extend(other) return self *************** *** 359,362 **** --- 393,397 ---- class definition_list_item(_Element): pass class term(_TextElement): pass + class classifier(_TextElement): pass class definition(_Element): pass class field_list(_Element): pass |
From: David G. <go...@us...> - 2001-08-23 04:00:00
|
Update of /cvsroot/docstring/dps In directory usw-pr-cvs1:/tmp/cvs-serv29198/dps Modified Files: HISTORY.txt Log Message: updated Index: HISTORY.txt =================================================================== RCS file: /cvsroot/docstring/dps/HISTORY.txt,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** HISTORY.txt 2001/08/22 04:12:27 1.6 --- HISTORY.txt 2001/08/23 03:59:30 1.7 *************** *** 53,58 **** - Cleaned up & updated. - Fixed bug in StateMachine.getunindented(). - - Added startoffset parameter to StateMachineWS.getindented() (but - I may be backing this off soon -- not the right solution). * dps/parsers/model.py: --- 53,56 ---- |
From: David G. <go...@us...> - 2001-08-23 03:59:07
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv29015/dps/dps Modified Files: statemachine.py Log Message: - Removed startoffset parameter from StateMachineWS.getindented(), undoing yesterday's bad fix. Index: statemachine.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/statemachine.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** statemachine.py 2001/08/22 04:08:22 1.4 --- statemachine.py 2001/08/23 03:59:03 1.5 *************** *** 3,7 **** """ :Author: David Goodger ! :Contact: dgo...@bi... :Version: 1.3 :Revision: $Revision$ --- 3,7 ---- """ :Author: David Goodger ! :Contact: go...@us... :Version: 1.3 :Revision: $Revision$ *************** *** 294,298 **** break if line[0] == ' ': ! self.nextline(len(block) - 1) raise UnexpectedIndentationError(block, self.abslineno() + 1) block.append(line) --- 294,298 ---- break if line[0] == ' ': ! self.nextline(len(block) - 1) # advance to last line of block raise UnexpectedIndentationError(block, self.abslineno() + 1) block.append(line) *************** *** 684,688 **** return context, '', [] # neither blank line nor indented ! def getindented(self, startoffset=0): """ Return an indented block and info. --- 684,688 ---- return context, '', [] # neither blank line nor indented ! def getindented(self): """ Return an indented block and info. *************** *** 696,705 **** - whether or not it finished with a blank line. """ ! offset = self.abslineoffset() + startoffset indented, indent, blankfinish = extractindented( ! self.inputlines[self.lineoffset + startoffset:]) if indented: ! # advance to last indented line ! self.nextline(len(indented) - 1 + startoffset) while indented and not indented[-1].strip(): indented.pop() --- 696,704 ---- - whether or not it finished with a blank line. """ ! offset = self.abslineoffset() indented, indent, blankfinish = extractindented( ! self.inputlines[self.lineoffset:]) if indented: ! self.nextline(len(indented) - 1) # advance to last indented line while indented and not indented[-1].strip(): indented.pop() |
From: David G. <go...@us...> - 2001-08-23 03:56:29
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv27739/dps/dps Modified Files: utils.py Log Message: updated Index: utils.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/utils.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** utils.py 2001/07/22 22:36:09 1.1.1.1 --- utils.py 2001/08/23 03:56:27 1.2 *************** *** 2,10 **** """ ! Author: David Goodger ! Contact: dgo...@bi... ! Revision: $Revision$ ! Date: $Date$ ! Copyright: This module has been placed in the public domain. """ --- 2,10 ---- """ ! :Author: David Goodger ! :Contact: go...@us... ! :Revision: $Revision$ ! :Date: $Date$ ! :Copyright: This module has been placed in the public domain. """ |
From: David G. <go...@us...> - 2001-08-23 03:56:09
|
Update of /cvsroot/docstring/dps/dps In directory usw-pr-cvs1:/tmp/cvs-serv27655/dps/dps Modified Files: test_statemachine.py Log Message: updated Index: test_statemachine.py =================================================================== RCS file: /cvsroot/docstring/dps/dps/test_statemachine.py,v retrieving revision 1.1.1.1 retrieving revision 1.2 diff -C2 -d -r1.1.1.1 -r1.2 *** test_statemachine.py 2001/07/22 22:36:08 1.1.1.1 --- test_statemachine.py 2001/08/23 03:56:06 1.2 *************** *** 2,10 **** """ ! Author: David Goodger ! Contact: dgo...@bi... ! Revision: $Revision$ ! Date: $Date$ ! Copyright: This module has been placed in the public domain. Test module for statemachine.py. --- 2,10 ---- """ ! :Author: David Goodger ! :Contact: go...@us... ! :Revision: $Revision$ ! :Date: $Date$ ! :Copyright: This module has been placed in the public domain. Test module for statemachine.py. |