Thread: [Epydoc-commits] SF.net SVN: epydoc: [1293] trunk/epydoc/src/epydoc/test
Brought to you by:
edloper
From: <ed...@us...> - 2006-08-22 16:43:12
|
Revision: 1293 Author: edloper Date: 2006-08-22 09:43:07 -0700 (Tue, 22 Aug 2006) ViewCVS: http://svn.sourceforge.net/epydoc/?rev=1293&view=rev Log Message: ----------- - Changed page title formatting to make rst happy. - Updated docparser tests to reflect the fact that the parse_repr field now uses normal (not tight) spacing. - Updated the encoding examples. Modified Paths: -------------- trunk/epydoc/src/epydoc/test/apidoc.doctest trunk/epydoc/src/epydoc/test/docintrospecter.doctest trunk/epydoc/src/epydoc/test/docparser.doctest trunk/epydoc/src/epydoc/test/encoding.doctest trunk/epydoc/src/epydoc/test/epytext.doctest Modified: trunk/epydoc/src/epydoc/test/apidoc.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/apidoc.doctest 2006-08-22 15:11:17 UTC (rev 1292) +++ trunk/epydoc/src/epydoc/test/apidoc.doctest 2006-08-22 16:43:07 UTC (rev 1293) @@ -1,5 +1,5 @@ - Regression Testing for epydoc.apidoc - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Regression Testing for epydoc.apidoc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This file serves to provide both documentation and regression tests for the epydoc.apidoc module. The main purpose of this module is to define the `APIDoc` class hierarchy, which is used to encode API Modified: trunk/epydoc/src/epydoc/test/docintrospecter.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2006-08-22 15:11:17 UTC (rev 1292) +++ trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2006-08-22 16:43:07 UTC (rev 1293) @@ -1,5 +1,5 @@ - Regression Testing for epydoc.docintrospecter - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Regression Testing for epydoc.docintrospecter +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The `epydoc.docintrospecter` module is used to extract API documentation by introspecting Python objects directy. Its primary interface is `introspect_docs()`, which takes a Python object, and returns a Modified: trunk/epydoc/src/epydoc/test/docparser.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docparser.doctest 2006-08-22 15:11:17 UTC (rev 1292) +++ trunk/epydoc/src/epydoc/test/docparser.doctest 2006-08-22 16:43:07 UTC (rev 1293) @@ -1,5 +1,5 @@ - Regression Testing for epydoc.docparser - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Regression Testing for epydoc.docparser +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The `epydoc.docparser` module is used to extract API documentation by parsing the source code of Python files. Its primary interface is `parse_docs()`, which takes a module's filename, and returns a @@ -101,7 +101,7 @@ | +- defining_module | | +- ModuleDoc for test [0] (defined above) | +- docs_extracted_by = 'parser' - | +- parse_repr = u'[1,2,3]+ [4,5]' + | +- parse_repr = u'[1, 2, 3]+ [4, 5]' | +- toktree = [[(51, u'['), (2, u'1'), (51, u','), ... +- z => VariableDoc for test.z [5] +- container @@ -117,7 +117,7 @@ +- defining_module | +- ModuleDoc for test [0] (defined above) +- docs_extracted_by = 'parser' - +- parse_repr = u'f(x,y)' + +- parse_repr = u'f(x, y)' +- toktree = [(1, u'f'), [(51, u'('), (1, u'x'), (... In this example, DocParser decides that the assignment to y is @@ -136,7 +136,7 @@ | +- name = u'x' | +- value | +- GenericValueDoc [2] - | +- parse_repr = u'[1,2]' + | +- parse_repr = u'[1, 2]' +- y => VariableDoc for test.y [3] +- is_alias = True +- name = u'y' @@ -233,17 +233,19 @@ ===================== DocParser will look inside certain types of module-level control blocks. By default, DocParser looks inside the following block types: - - if blocks - - elif blocks - - else blocks - - try blocks - - except blocks - - finally blocks +- if blocks +- elif blocks +- else blocks +- try blocks +- except blocks +- finally blocks + By default, DocParse does not look inside the following block types: - - while blocks - - for blocks +- while blocks +- for blocks + >>> # DocParser looks inside if/elif/else blocks. >>> runparser(s=""" ... if condition: @@ -409,6 +411,7 @@ ... """, show="f", exclude='defining_module') RoutineDoc for test.f [0] +- canonical_name = DottedName('test', u'f') + +- decorators = [] +- docs_extracted_by = 'parser' +- docstring = u'docstring for f' +- docstring_lineno = 3 @@ -433,6 +436,7 @@ ... """, show="f", exclude='defining_module') RoutineDoc for test.f [0] +- canonical_name = DottedName('test', u'f') + +- decorators = [] +- docs_extracted_by = 'parser' +- docstring = u'docstring for f' +- docstring_lineno = 3 @@ -448,6 +452,7 @@ ... """, show="f", exclude='defining_module') RoutineDoc for test.f [0] +- canonical_name = DottedName('test', u'f') + +- decorators = [] +- docs_extracted_by = 'parser' +- kwarg = None +- lineno = 2 Modified: trunk/epydoc/src/epydoc/test/encoding.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/encoding.doctest 2006-08-22 15:11:17 UTC (rev 1292) +++ trunk/epydoc/src/epydoc/test/encoding.doctest 2006-08-22 16:43:07 UTC (rev 1293) @@ -1,5 +1,5 @@ - End-to-end Tests for Unicode Encoding - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +End-to-end Tests for Unicode Encoding +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Test Function ============= The following function is used as an end-to-end test for unicode @@ -115,23 +115,23 @@ >>> # UTF-8 with a coding directive: >>> test("# -*- coding: utf-8 -*-\n"+utf8_test) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   >>> # UTF-8 with a BOM & a coding directive: >>> test(utf8_bom+"# -*- coding: utf-8 -*-\n"+utf8_test) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   >>> # UTF-8 with a BOM & no coding directive: >>> test(utf8_bom+utf8_test) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   Tests for KOI8-R: @@ -154,15 +154,15 @@ >>> test("\n# -*- coding: utf-8 -*-\n"+utf8_test) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   >>> test("# comment\n# -*- coding: utf-8 -*-\n"+utf8_test) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   Tests for shift-jis @@ -187,11 +187,12 @@ Under special circumstances, we may not be able to tell what the proper encoding for a docstring is. This happens if: - 1. the docstring is only available via introspection. - 2. we are unable to determine what module the object that owns - the docstring came from. - 3. the docstring contains non-ascii characters +1. the docstring is only available via introspection. +2. we are unable to determine what module the object that owns + the docstring came from. +3. the docstring contains non-ascii characters + Under these circumstances, we issue a warning, and treat the docstring as latin-1. An example of this is a non-unicode docstring for properties: @@ -210,35 +211,35 @@ >>> test("# -*- coding: utf-8 -*-\n"+utf8_test, introspect=False) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   >>> test(utf8_bom+"# -*- coding: utf-8 -*-\n"+utf8_test, introspect=False) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   >>> test(utf8_bom+utf8_test, introspect=False) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   >>> test("# -*- coding: utf-8 -*-\n"+utf8_test, parse=False) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   >>> test(utf8_bom+"# -*- coding: utf-8 -*-\n"+utf8_test, parse=False) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   >>> test(utf8_bom+utf8_test, parse=False) <p>abc ABC 123</p> - <p>0x80-0x7ff range: €  ߾ ߿</p> - <p>0x800-0xffff range: ࠀ ࠁ  </p> - 0x10000-0x10ffff range: 𐀀 𐀁   + <p>0x80-0x7ff range: €  ߾ ߿</p> + <p>0x800-0xffff range: ࠀ ࠁ  </p> + 0x10000-0x10ffff range: 𐀀 𐀁   Context checks ============== Modified: trunk/epydoc/src/epydoc/test/epytext.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/epytext.doctest 2006-08-22 15:11:17 UTC (rev 1292) +++ trunk/epydoc/src/epydoc/test/epytext.doctest 2006-08-22 16:43:07 UTC (rev 1293) @@ -1,5 +1,5 @@ - Regression Testing for epytext - ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Regression Testing for epytext +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ These tests were taken pretty much verbatim out of the old unittests from epydoc 2.1. They could use some serious updating, when I get the time, esp. given that it's so much easier to write tests with doctest This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-02-11 04:11:42
|
Revision: 1451 http://svn.sourceforge.net/epydoc/?rev=1451&view=rev Author: edloper Date: 2007-02-10 20:11:41 -0800 (Sat, 10 Feb 2007) Log Message: ----------- - Changed tests to use "pickle" as an example module rather than "re", since in Python <=2.4, re.match returned an object named 'sre.match', but in Python >=2.5, it is now named "re.match" (since the sre module was deprecated). This was causing tests to fail when run with Python 2.5. Modified Paths: -------------- trunk/epydoc/src/epydoc/test/docbuilder.doctest trunk/epydoc/src/epydoc/test/docintrospecter.doctest Modified: trunk/epydoc/src/epydoc/test/docbuilder.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-11 04:04:28 UTC (rev 1450) +++ trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-11 04:11:41 UTC (rev 1451) @@ -140,14 +140,14 @@ >>> runbuilder(s=""" ... from __future__ import division - ... from re import match + ... from pickle import dump ... """, ... attribs='variables value') ModuleDoc for epydoc_test [0] +- variables - +- match => VariableDoc for epydoc_test.match [1] + +- dump => VariableDoc for epydoc_test.dump [1] +- value - +- ValueDoc for sre.match [2] + +- ValueDoc for pickle.dump [2] Specifying constructor signature in class docstring Modified: trunk/epydoc/src/epydoc/test/docintrospecter.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2007-02-11 04:04:28 UTC (rev 1450) +++ trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2007-02-11 04:11:41 UTC (rev 1451) @@ -148,9 +148,9 @@ or not, so it sets `is_imported` to `UNKNOWN` when it can't decide: >>> runintrospecter(s=""" - ... from re import match # definitely imported - ... from re import error # definitely imported - ... from re import MULTILINE # might be imported + ... from pickle import dump # definitely imported + ... from pickle import Pickler # definitely imported + ... from pickle import HIGHEST_PROTOCOL # might be imported ... class A: pass # definitely not imported ... def f(x): pass # definitely not imported ... """, attribs="variables is_imported") @@ -158,14 +158,14 @@ +- variables +- A => VariableDoc for epydoc_test.A [1] | +- is_imported = False - +- MULTILINE => VariableDoc for epydoc_test.MULTILINE [2] + +- HIGHEST_PROTOCOL => VariableDoc for epydoc_test.HIGHEST_PROTOCOL [2] | +- is_imported = <UNKNOWN> - +- error => VariableDoc for epydoc_test.error [3] + +- Pickler => VariableDoc for epydoc_test.Pickler [3] | +- is_imported = True - +- f => VariableDoc for epydoc_test.f [4] - | +- is_imported = False - +- match => VariableDoc for epydoc_test.match [5] - +- is_imported = True + +- dump => VariableDoc for epydoc_test.dump [4] + | +- is_imported = True + +- f => VariableDoc for epydoc_test.f [5] + +- is_imported = False Variable Docstrings =================== @@ -504,32 +504,32 @@ ======= >>> runintrospecter(s=""" - ... import re - ... from re import match + ... import pickle + ... from pickle import dump ... """, ... attribs='variables value is_imported') ModuleDoc for epydoc_test [0] +- variables - +- match => VariableDoc for epydoc_test.match [1] + +- dump => VariableDoc for epydoc_test.dump [1] | +- is_imported = True | +- value - | +- ValueDoc for sre.match [2] - +- re => VariableDoc for epydoc_test.re [3] + | +- ValueDoc for pickle.dump [2] + +- pickle => VariableDoc for epydoc_test.pickle [3] +- is_imported = True +- value - +- ModuleDoc for re [4] + +- ModuleDoc for pickle [4] +- variables = {} >>> runintrospecter(s=""" ... from __future__ import division - ... from re import match + ... from pickle import dump ... """, ... attribs='variables value') ModuleDoc for epydoc_test [0] +- variables - +- match => VariableDoc for epydoc_test.match [1] + +- dump => VariableDoc for epydoc_test.dump [1] +- value - +- ValueDoc for sre.match [2] + +- ValueDoc for pickle.dump [2] Unicode ======= This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-02-11 05:28:17
|
Revision: 1456 http://svn.sourceforge.net/epydoc/?rev=1456&view=rev Author: edloper Date: 2007-02-10 21:28:16 -0800 (Sat, 10 Feb 2007) Log Message: ----------- - Moved various test functions from doctest files (eg, runbuilder, runparser, etc) to a single epydoc.test.util module, so they can be shared between different doctest files. (E.g., the restructuredtext.doctest file needed to make use of the runbuilder function defined in docbuilder.doctest). - Moved all tests that depend on docutils to restructuredtext.doctest - Marked restructuredtext.doctest as requiring the docutils module Modified Paths: -------------- trunk/epydoc/src/epydoc/test/docbuilder.doctest trunk/epydoc/src/epydoc/test/docintrospecter.doctest trunk/epydoc/src/epydoc/test/docparser.doctest trunk/epydoc/src/epydoc/test/encoding.doctest trunk/epydoc/src/epydoc/test/restructuredtext.doctest Modified: trunk/epydoc/src/epydoc/test/docbuilder.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-11 05:25:21 UTC (rev 1455) +++ trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-11 05:28:16 UTC (rev 1456) @@ -12,130 +12,38 @@ name of a variable in the module whose documentation should be built, instead of bilding docs for the whole module. - >>> import tempfile, re, os, os.path, textwrap, sys - >>> from epydoc.docbuilder import build_doc - >>> from epydoc.apidoc import ClassDoc, RoutineDoc - >>> from epydoc.markup import ParsedDocstring + >>> from epydoc.test.util import runbuilder - >>> def to_plain(docstring): - ... """Conver a parsed docstring into plain text""" - ... if isinstance(docstring, ParsedDocstring): - ... docstring = docstring.to_plaintext(None) - ... return docstring.rsplit() - - >>> def fun_to_plain(val_doc): - ... """Convert parsed docstrings in text from a RoutineDoc""" - ... for k, v in val_doc.arg_types.items(): - ... val_doc.arg_types[k] = to_plain(v) - ... for i, (k, v) in enumerate(val_doc.arg_descrs): - ... val_doc.arg_descrs[i] = (k, to_plain(v)) - - >>> def runbuilder(s, attribs='', build=None, exclude=''): - ... # Write it to a temp file. - ... tmp_dir = tempfile.mkdtemp() - ... out = open(os.path.join(tmp_dir, 'epydoc_test.py'), 'w') - ... out.write(textwrap.dedent(s)) - ... out.close() - ... # Build it. - ... val_doc = build_doc(os.path.join(tmp_dir, 'epydoc_test.py')) - ... if build: val_doc = val_doc.variables[build].value - ... # Display it. - ... if isinstance(val_doc, ClassDoc): - ... for val in val_doc.variables.values(): - ... if isinstance(val.value, RoutineDoc): - ... fun_to_plain(val.value) - ... s = val_doc.pp(include=attribs.split(),exclude=exclude.split()) - ... s = re.sub(r"(filename = ).*", r"\1...", s) - ... s = re.sub(r"(<module 'epydoc_test' from ).*", r'\1...', s) - ... s = re.sub(r"(<function \w+ at )0x\w+>", r"\1...>", s) - ... s = re.sub(r"(<\w+ object at )0x\w+>", r"\1...>", s) - ... print s - ... # Clean up. - ... os.unlink(os.path.join(tmp_dir, 'epydoc_test.py')) - ... try: os.unlink(os.path.join(tmp_dir, 'epydoc_test.pyc')) - ... except OSError: pass - ... os.rmdir(tmp_dir) - ... del sys.modules['epydoc_test'] - Docformat selection =================== The docstrings format can be selected using the ``__docformat__`` module -variable. +variable. In the second example below, where docformat='plaintext', +the string "@ivar x: ..." will not be treated as a field, since the +docstring format is plaintext. >>> runbuilder(s=''' - ... __docformat__ = 'restructuredtext' - ... + ... __docformat__ = 'epytext' ... class Foo: - ... """Testing defining_module - ... - ... :cvar `c`: class var in class docstring - ... :type `c`: str - ... """ - ... c = 'abc' - ... - ... def __init__(self): - ... #: A funny number - ... #: - ... #: :type: float - ... self.x = 108.0 - ... - ... y = property( - ... fget=lambda self: 42, - ... doc="""A property has no defining module - ... - ... :type: int - ... """) - ... - ... def f(self): - ... """A function has a defining module - ... - ... :rtype: int - ... """ - ... return 42 + ... """@ivar x: description...""" ... ''', - ... build='Foo', - ... attribs="variables name value type_descr return_type descr") + ... build='Foo', attribs='descr variables') ClassDoc for epydoc_test.Foo [0] - +- descr = u'Testing defining_module' + +- descr = None +- variables - +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1] - | +- descr = None - | +- name = '__init__' - | +- type_descr = None - | +- value - | +- RoutineDoc for epydoc_test.Foo.__init__ [2] - | +- descr = None - | +- return_type = None - +- c => VariableDoc for epydoc_test.Foo.c [3] - | +- descr = u'class var in class docstring' - | +- name = 'c' - | +- type_descr = u'str' - | +- value - | +- GenericValueDoc [4] - | +- descr = None - +- f => VariableDoc for epydoc_test.Foo.f [5] - | +- descr = None - | +- name = 'f' - | +- type_descr = None - | +- value - | +- RoutineDoc for epydoc_test.Foo.f [6] - | +- descr = u'A function has a defining module' - | +- return_type = u'int' - +- x => VariableDoc for epydoc_test.Foo.x [7] - | +- descr = u'A funny number' - | +- name = u'x' - | +- type_descr = u'float' - | +- value = <UNKNOWN> - +- y => VariableDoc for epydoc_test.Foo.y [8] - +- descr = None - +- name = 'y' - +- type_descr = None - +- value - +- PropertyDoc for epydoc_test.Foo.y [9] - +- descr = u'A property has no defining module' - +- type_descr = u'int' + +- x => VariableDoc for epydoc_test.Foo.x [1] + +- descr = u'description...\n\n' + >>> runbuilder(s=''' + ... __docformat__ = 'plaintext' + ... class Foo: + ... """@var x: description...""" + ... ''', + ... build='Foo', attribs='descr variables') + ClassDoc for epydoc_test.Foo [0] + +- descr = u'@var x: description...\n' + +- variables = {} + Stuff from future doesn't appear as variable. >>> runbuilder(s=""" @@ -381,45 +289,3 @@ +- type_descr = u'date\n\n' +- value = <UNKNOWN> -Also reST consolidated fields are not a problem. - - >>> runbuilder(s=''' - ... __docformat__ = 'restructuredtext' - ... class Foo: - ... """This is the object docstring - ... - ... :Parameters: - ... `a` : string - ... init param. - ... - ... :Exceptions: - ... * `ValueError`: frobnication error - ... init param. - ... - ... :IVariables: - ... `a` : date - ... instance var. - ... """ - ... def __init__(self, a): - ... pass - ... ''', - ... build="Foo", - ... attribs="variables name value exception_descrs " - ... "posargs vararg kwarg type_descr arg_types arg_descrs") - ClassDoc for epydoc_test.Foo [0] - +- variables - +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1] - | +- name = '__init__' - | +- type_descr = None - | +- value - | +- RoutineDoc for epydoc_test.Foo.__init__ [2] - | +- arg_descrs = [([u'a'], [u'init', u'param.'])] - | +- arg_types = {u'a': [u'string']} - | +- exception_descrs = [(DottedName(u'ValueError'), ... - | +- kwarg = None - | +- posargs = ['self', 'a'] - | +- vararg = None - +- a => VariableDoc for epydoc_test.Foo.a [3] - +- name = u'a' - +- type_descr = u'date' - +- value = <UNKNOWN> Modified: trunk/epydoc/src/epydoc/test/docintrospecter.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2007-02-11 05:25:21 UTC (rev 1455) +++ trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2007-02-11 05:28:16 UTC (rev 1456) @@ -15,36 +15,7 @@ name of a variable in the module whose value should be introspected, instead of introspecting the whole module. - >>> import tempfile, re, os, os.path, textwrap, sys - >>> from epydoc.docintrospecter import introspect_docs - >>> def runintrospecter(s, attribs='', introspect=None, exclude=''): - ... # Write it to a temp file. - ... tmp_dir = tempfile.mkdtemp() - ... out = open(os.path.join(tmp_dir, 'epydoc_test.py'), 'w') - ... out.write(textwrap.dedent(s)) - ... out.close() - ... # Import it. - ... sys.path.insert(0, tmp_dir) - ... if introspect is None: - ... import epydoc_test as val - ... else: - ... exec("from epydoc_test import %s as val" % introspect) - ... del sys.path[0] - ... # Introspect it. - ... val_doc = introspect_docs(val) - ... # Display it. - ... s = val_doc.pp(include=attribs.split(),exclude=exclude.split()) - ... s = re.sub(r"(filename = ).*", r"\1...", s) - ... s = re.sub(r"(<module 'epydoc_test' from ).*", r'\1...', s) - ... s = re.sub(r"(<function \w+ at )0x\w+>", r"\1...>", s) - ... s = re.sub(r"(<\w+ object at )0x\w+>", r"\1...>", s) - ... print s - ... # Clean up. - ... os.unlink(os.path.join(tmp_dir, 'epydoc_test.py')) - ... try: os.unlink(os.path.join(tmp_dir, 'epydoc_test.pyc')) - ... except OSError: pass - ... os.rmdir(tmp_dir) - ... del sys.modules['epydoc_test'] + >>> from epydoc.test.util import runintrospecter Module Variables ================ Modified: trunk/epydoc/src/epydoc/test/docparser.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docparser.doctest 2007-02-11 05:25:21 UTC (rev 1455) +++ trunk/epydoc/src/epydoc/test/docparser.doctest 2007-02-11 05:28:16 UTC (rev 1456) @@ -15,30 +15,7 @@ module that should be displayed (but the whole module will always be inspected; this just selects what to display). - >>> import tempfile, re, os, os.path, textwrap - >>> from epydoc.apidoc import ClassDoc - >>> from epydoc.docparser import parse_docs - >>> def runparser(s, attribs='', show=None, exclude=''): - ... # Write it to a temp file. - ... tmp_dir = tempfile.mkdtemp() - ... out = open(os.path.join(tmp_dir, 'test.py'), 'w') - ... out.write(textwrap.dedent(s)) - ... out.close() - ... # Parse it. - ... val_doc = parse_docs(out.name) - ... if show is not None: - ... for name in show.split('.'): - ... if isinstance(val_doc, ClassDoc): - ... val_doc = val_doc.local_variables[name].value - ... else: - ... val_doc = val_doc.variables[name].value - ... # Display it. - ... s = val_doc.pp(include=attribs.split(), exclude=exclude.split()) - ... s = re.sub(r"filename = .*", "filename = ...", s) - ... print s - ... # Clean up. - ... os.unlink(os.path.join(tmp_dir, 'test.py')) - ... os.rmdir(tmp_dir) + >>> from epydoc.test.util import runparser Module Variables from Assignment Statements =========================================== Modified: trunk/epydoc/src/epydoc/test/encoding.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/encoding.doctest 2007-02-11 05:25:21 UTC (rev 1455) +++ trunk/epydoc/src/epydoc/test/encoding.doctest 2007-02-11 05:28:16 UTC (rev 1456) @@ -2,7 +2,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Test Function ============= -The following function is used as an end-to-end test for unicode +The function `testencoding` is used as an end-to-end test for unicode encodings. It takes a given string, writes it to a python file, and processes that file's documentation. It then generates HTML output from the documentation, extracts all docstrings from the generated @@ -10,59 +10,9 @@ docstrings, it monkey-patches the HMTLwriter.docstring_to_html() method.) - >>> # Display warninings & errors: - >>> from epydoc import log - >>> log.register_logger(log.SimpleLogger()) + >>> from epydoc.test.util import print_warnings, testencoding + >>> print_warnings() - >>> # Other imports: - >>> import tempfile, os, re, textwrap, sys - >>> from epydoc.docbuilder import build_doc_index - >>> from epydoc.docwriter.html import HTMLWriter - - >>> # Monkey-patch the write function: - >>> def docstring_to_html(self, parsed_docstring, w=None, i=0): - ... s = parsed_docstring.to_html(None).strip() - ... s = s.encode('ascii', 'xmlcharrefreplace') - ... s = remove_surrogates(s) - ... print s - ... return '' - >>> HTMLWriter.docstring_to_html = docstring_to_html - - >>> # The actual test function: - >>> def test(s, introspect=True, parse=True, debug=False): - ... # Write s to a temporary file. - ... tmp_dir = tempfile.mkdtemp() - ... path = os.path.join(tmp_dir, 'enc_test.py') - ... out = open(path, 'w') - ... out.write(textwrap.dedent(s)) - ... out.close() - ... # Build docs for it - ... docindex = build_doc_index([path], introspect, parse) - ... if docindex is None: return - ... try: del sys.modules['enc_test'] - ... except: pass - ... # Write html output. - ... writer = HTMLWriter(docindex, mark_docstrings=True) - ... writer.write(tmp_dir) - ... for file in os.listdir(tmp_dir): - ... os.unlink(os.path.join(tmp_dir,file)) - ... os.rmdir(tmp_dir) - -The following is a helper function, used to convert two-character -surrogate sequences into single characters. This is needed because -some systems create surrogates but others don't. - - >>> def remove_surrogates(s): - ... pieces = re.split('(&#\d+;)', s) - ... for i in range(3, len(pieces)-1, 2): - ... if pieces[i-1] != '': continue - ... high,low = int(pieces[i-2][2:-1]), int(pieces[i][2:-1]) - ... if 0xd800 <= high <= 0xdbff and 0xdc00 <= low <= 0xdfff: - ... pieces[i-2] = '&#%d;' % (((high&0x3ff)<<10) + - ... (low&0x3ff) + 0x10000) - ... pieces[i] = '' - ... return ''.join(pieces) - Encoding Tests ============== This section tests the output for a variety of different encodings. @@ -72,27 +22,27 @@ Tests for several Microsoft codepges: - >>> test('''# -*- coding: cp874 -*- + >>> testencoding('''# -*- coding: cp874 -*- ... """abc ABC 123 \x80 \x85""" ... ''') abc ABC 123 € … - >>> test('''# -*- coding: cp1250 -*- + >>> testencoding('''# -*- coding: cp1250 -*- ... """abc ABC 123 \x80 \x82 \x84 \x85 \xff""" ... ''') abc ABC 123 € ‚ „ … ˙ - >>> test('''# -*- coding: cp1251 -*- + >>> testencoding('''# -*- coding: cp1251 -*- ... """abc ABC 123 \x80 \x81 \x82 \xff""" ... ''') abc ABC 123 Ђ Ѓ ‚ я - >>> test('''# -*- coding: cp1252 -*- + >>> testencoding('''# -*- coding: cp1252 -*- ... """abc ABC 123 \x80 \x82 \x83 \xff""" ... ''') abc ABC 123 € ‚ ƒ ÿ - >>> test('''# -*- coding: cp1253 -*- + >>> testencoding('''# -*- coding: cp1253 -*- ... """abc ABC 123 \x80 \x82 \x83 \xfe""" ... ''') abc ABC 123 € ‚ ƒ ώ @@ -115,21 +65,21 @@ >>> utf8_bom = '\xef\xbb\xbf' >>> # UTF-8 with a coding directive: - >>> test("# -*- coding: utf-8 -*-\n"+utf8_test) + >>> testencoding("# -*- coding: utf-8 -*-\n"+utf8_test) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> 0x10000-0x10ffff range: 𐀀 𐀁   >>> # UTF-8 with a BOM & a coding directive: - >>> test(utf8_bom+"# -*- coding: utf-8 -*-\n"+utf8_test) + >>> testencoding(utf8_bom+"# -*- coding: utf-8 -*-\n"+utf8_test) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> 0x10000-0x10ffff range: 𐀀 𐀁   >>> # UTF-8 with a BOM & no coding directive: - >>> test(utf8_bom+utf8_test) + >>> testencoding(utf8_bom+utf8_test) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> @@ -137,30 +87,30 @@ Tests for KOI8-R: - >>> test('''# -*- coding: koi8-r -*- + >>> testencoding('''# -*- coding: koi8-r -*- ... """abc ABC 123 \x80 \x82 \x83 \xff""" ... ''') abc ABC 123 ─ ┌ ┐ Ъ Tests for 'coding' directive on the second line: - >>> test('''\n# -*- coding: cp1252 -*- + >>> testencoding('''\n# -*- coding: cp1252 -*- ... """abc ABC 123 \x80 \x82 \x83 \xff""" ... ''') abc ABC 123 € ‚ ƒ ÿ - >>> test('''# comment on the first line.\n# -*- coding: cp1252 -*- + >>> testencoding('''# comment on the first line.\n# -*- coding: cp1252 -*- ... """abc ABC 123 \x80 \x82 \x83 \xff""" ... ''') abc ABC 123 € ‚ ƒ ÿ - >>> test("\n# -*- coding: utf-8 -*-\n"+utf8_test) + >>> testencoding("\n# -*- coding: utf-8 -*-\n"+utf8_test) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> 0x10000-0x10ffff range: 𐀀 𐀁   - >>> test("# comment\n# -*- coding: utf-8 -*-\n"+utf8_test) + >>> testencoding("# comment\n# -*- coding: utf-8 -*-\n"+utf8_test) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> @@ -168,7 +118,7 @@ Tests for shift-jis - >>> test('''# -*- coding: shift_jis -*- + >>> testencoding('''# -*- coding: shift_jis -*- ... """abc ABC 123 \xA1 \xA2 \xA3""" ... ''') abc ABC 123 。 「 」 @@ -177,12 +127,12 @@ ================ Make sure that we use the coding for both str and unicode docstrings. - >>> test('''# -*- coding: utf-8 -*- + >>> testencoding('''# -*- coding: utf-8 -*- ... """abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80""" ... ''') abc ABC 123 € ߿ ࠀ - >>> test('''# -*- coding: utf-8 -*- + >>> testencoding('''# -*- coding: utf-8 -*- ... u"""abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80""" ... ''') abc ABC 123 € ߿ ࠀ @@ -199,7 +149,7 @@ as latin-1. An example of this is a non-unicode docstring for properties: - >>> test('''# -*- coding: utf-8 -*- + >>> testencoding('''# -*- coding: utf-8 -*- ... p=property(doc="""\xc2\x80""") ... ''') # doctest: +ELLIPSIS <property object at ...>'s docstring is not a unicode string, but it contains non-ascii data -- treating it as latin-1. @@ -210,33 +160,33 @@ This section checks to make sure that both introspection & parsing are getting the right results. - >>> test("# -*- coding: utf-8 -*-\n"+utf8_test, introspect=False) + >>> testencoding("# -*- coding: utf-8 -*-\n"+utf8_test, introspect=False) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> 0x10000-0x10ffff range: 𐀀 𐀁   - >>> test(utf8_bom+"# -*- coding: utf-8 -*-\n"+utf8_test, introspect=False) + >>> testencoding(utf8_bom+"# -*- coding: utf-8 -*-\n"+utf8_test, introspect=False) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> 0x10000-0x10ffff range: 𐀀 𐀁   - >>> test(utf8_bom+utf8_test, introspect=False) + >>> testencoding(utf8_bom+utf8_test, introspect=False) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> 0x10000-0x10ffff range: 𐀀 𐀁   - >>> test("# -*- coding: utf-8 -*-\n"+utf8_test, parse=False) + >>> testencoding("# -*- coding: utf-8 -*-\n"+utf8_test, parse=False) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> 0x10000-0x10ffff range: 𐀀 𐀁   - >>> test(utf8_bom+"# -*- coding: utf-8 -*-\n"+utf8_test, parse=False) + >>> testencoding(utf8_bom+"# -*- coding: utf-8 -*-\n"+utf8_test, parse=False) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> 0x10000-0x10ffff range: 𐀀 𐀁   - >>> test(utf8_bom+utf8_test, parse=False) + >>> testencoding(utf8_bom+utf8_test, parse=False) <p>abc ABC 123</p> <p>0x80-0x7ff range: €  ߾ ߿</p> <p>0x800-0xffff range: ࠀ ࠁ  </p> @@ -246,7 +196,7 @@ ============== Make sure that docstrings are rendered correctly in different contexts. - >>> test('''# -*- coding: utf-8 -*- + >>> testencoding('''# -*- coding: utf-8 -*- ... """ ... @var x: abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80 ... @group \xc2\x80: x @@ -254,7 +204,7 @@ ... ''') abc ABC 123 € ߿ ࠀ - >>> test('''# -*- coding: utf-8 -*- + >>> testencoding('''# -*- coding: utf-8 -*- ... def f(x): ... """ ... abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80 @@ -274,7 +224,7 @@ abc ABC 123 € ߿ ࠀ abc ABC 123 € ߿ ࠀ - >>> test('''# -*- coding: utf-8 -*- + >>> testencoding('''# -*- coding: utf-8 -*- ... class A: ... """ ... abc ABC 123 \xc2\x80 \xdf\xbf \xe0\xa0\x80 Modified: trunk/epydoc/src/epydoc/test/restructuredtext.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/restructuredtext.doctest 2007-02-11 05:25:21 UTC (rev 1455) +++ trunk/epydoc/src/epydoc/test/restructuredtext.doctest 2007-02-11 05:28:16 UTC (rev 1456) @@ -1,5 +1,6 @@ -Regression Testing for plaintext -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Regression Testing for restructuredtext +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +:RequireModule: docutils Summary ======= @@ -108,3 +109,125 @@ <span class="py-keyword">def</span> <span class="py-defname">__init__</span>(self): <span class="py-keyword">pass</span></pre> <BLANKLINE> + +Consolidated Fields +=================== + + >>> from epydoc.test.util import runbuilder + + >>> runbuilder(s=''' + ... __docformat__ = 'restructuredtext' + ... class Foo: + ... """This is the object docstring + ... + ... :Parameters: + ... `a` : string + ... init param. + ... + ... :Exceptions: + ... * `ValueError`: frobnication error + ... init param. + ... + ... :IVariables: + ... `a` : date + ... instance var. + ... """ + ... def __init__(self, a): + ... pass + ... ''', + ... build="Foo", + ... attribs="variables name value exception_descrs " + ... "posargs vararg kwarg type_descr arg_types arg_descrs") + ClassDoc for epydoc_test.Foo [0] + +- variables + +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1] + | +- name = '__init__' + | +- type_descr = None + | +- value + | +- RoutineDoc for epydoc_test.Foo.__init__ [2] + | +- arg_descrs = [([u'a'], [u'init', u'param.'])] + | +- arg_types = {u'a': [u'string']} + | +- exception_descrs = [(DottedName(u'ValueError'), ... + | +- kwarg = None + | +- posargs = ['self', 'a'] + | +- vararg = None + +- a => VariableDoc for epydoc_test.Foo.a [3] + +- name = u'a' + +- type_descr = u'date' + +- value = <UNKNOWN> + +Misc rst constructs +=================== + + >>> runbuilder(s=''' + ... __docformat__ = 'restructuredtext' + ... + ... class Foo: + ... """Testing defining_module + ... + ... :cvar `c`: class var in class docstring + ... :type `c`: str + ... """ + ... c = 'abc' + ... + ... def __init__(self): + ... #: A funny number + ... #: + ... #: :type: float + ... self.x = 108.0 + ... + ... y = property( + ... fget=lambda self: 42, + ... doc="""A property has no defining module + ... + ... :type: int + ... """) + ... + ... def f(self): + ... """A function has a defining module + ... + ... :rtype: int + ... """ + ... return 42 + ... ''', + ... build='Foo', + ... attribs="variables name value type_descr return_type descr") + ClassDoc for epydoc_test.Foo [0] + +- descr = u'Testing defining_module' + +- variables + +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [1] + | +- descr = None + | +- name = '__init__' + | +- type_descr = None + | +- value + | +- RoutineDoc for epydoc_test.Foo.__init__ [2] + | +- descr = None + | +- return_type = None + +- c => VariableDoc for epydoc_test.Foo.c [3] + | +- descr = u'class var in class docstring' + | +- name = 'c' + | +- type_descr = u'str' + | +- value + | +- GenericValueDoc [4] + | +- descr = None + +- f => VariableDoc for epydoc_test.Foo.f [5] + | +- descr = None + | +- name = 'f' + | +- type_descr = None + | +- value + | +- RoutineDoc for epydoc_test.Foo.f [6] + | +- descr = u'A function has a defining module' + | +- return_type = u'int' + +- x => VariableDoc for epydoc_test.Foo.x [7] + | +- descr = u'A funny number' + | +- name = u'x' + | +- type_descr = u'float' + | +- value = <UNKNOWN> + +- y => VariableDoc for epydoc_test.Foo.y [8] + +- descr = None + +- name = 'y' + +- type_descr = None + +- value + +- PropertyDoc for epydoc_test.Foo.y [9] + +- descr = u'A property has no defining module' + +- type_descr = u'int' This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dva...@us...> - 2007-02-13 15:27:54
|
Revision: 1472 http://svn.sourceforge.net/epydoc/?rev=1472&view=rev Author: dvarrazzo Date: 2007-02-13 07:27:45 -0800 (Tue, 13 Feb 2007) Log Message: ----------- - All tests pass again. Modified Paths: -------------- trunk/epydoc/src/epydoc/test/docbuilder.doctest trunk/epydoc/src/epydoc/test/docparser.doctest trunk/epydoc/src/epydoc/test/epytext.doctest trunk/epydoc/src/epydoc/test/util.py Property Changed: ---------------- trunk/epydoc/src/epydoc/test/docbuilder.doctest trunk/epydoc/src/epydoc/test/javadoc.doctest trunk/epydoc/src/epydoc/test/plaintext.doctest trunk/epydoc/src/epydoc/test/pyval_repr.doctest trunk/epydoc/src/epydoc/test/restructuredtext.doctest Modified: trunk/epydoc/src/epydoc/test/docbuilder.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-13 14:27:23 UTC (rev 1471) +++ trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-13 15:27:45 UTC (rev 1472) @@ -310,7 +310,7 @@ ... c = 3+5 ... b.append(99) ... ''') - Foo u'<class epydoc_test.Foo at 0x40484bfc>' - a u'<epydoc_test.Foo instance at 0x4069ca4c>' + Foo u'<class epydoc_test.Foo at ...>' + a u'Foo()' b u'[1, 2, 3, 99]' c u'8' Property changes on: trunk/epydoc/src/epydoc/test/docbuilder.doctest ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/epydoc/src/epydoc/test/docparser.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docparser.doctest 2007-02-13 14:27:23 UTC (rev 1471) +++ trunk/epydoc/src/epydoc/test/docparser.doctest 2007-02-13 15:27:45 UTC (rev 1472) @@ -36,10 +36,10 @@ ... y = [1,2,3] + [4,5] ... z = f(x,y) ... """) - ModuleDoc for test [0] - +- canonical_name = DottedName('test') + ModuleDoc for epydoc_test [0] + +- canonical_name = DottedName('epydoc_test') +- defining_module - | +- ModuleDoc for test [0] (defined above) + | +- ModuleDoc for epydoc_test [0] (defined above) +- docs_extracted_by = 'parser' +- filename = ... +- imports = [] @@ -48,9 +48,9 @@ +- sort_spec = [u'x', u'y', u'z'] +- submodules = [] +- variables - +- x => VariableDoc for test.x [1] + +- x => VariableDoc for epydoc_test.x [1] | +- container - | | +- ModuleDoc for test [0] (defined above) + | | +- ModuleDoc for epydoc_test [0] (defined above) | +- docs_extracted_by = 'parser' | +- is_alias = False | +- is_imported = False @@ -60,13 +60,13 @@ | +- value | +- GenericValueDoc [2] | +- defining_module - | | +- ModuleDoc for test [0] (defined above) + | | +- ModuleDoc for epydoc_test [0] (defined above) | +- docs_extracted_by = 'parser' | +- parse_repr = u'12' | +- toktree = [(2, u'12')] - +- y => VariableDoc for test.y [3] + +- y => VariableDoc for epydoc_test.y [3] | +- container - | | +- ModuleDoc for test [0] (defined above) + | | +- ModuleDoc for epydoc_test [0] (defined above) | +- docs_extracted_by = 'parser' | +- is_alias = False | +- is_imported = False @@ -76,13 +76,13 @@ | +- value | +- GenericValueDoc [4] | +- defining_module - | | +- ModuleDoc for test [0] (defined above) + | | +- ModuleDoc for epydoc_test [0] (defined above) | +- docs_extracted_by = 'parser' | +- parse_repr = u'[1, 2, 3]+ [4, 5]' | +- toktree = [[(51, u'['), (2, u'1'), (51, u','), ... - +- z => VariableDoc for test.z [5] + +- z => VariableDoc for epydoc_test.z [5] +- container - | +- ModuleDoc for test [0] (defined above) + | +- ModuleDoc for epydoc_test [0] (defined above) +- docs_extracted_by = 'parser' +- is_alias = False +- is_imported = False @@ -92,7 +92,7 @@ +- value +- GenericValueDoc [6] +- defining_module - | +- ModuleDoc for test [0] (defined above) + | +- ModuleDoc for epydoc_test [0] (defined above) +- docs_extracted_by = 'parser' +- parse_repr = u'f(x, y)' +- toktree = [(1, u'f'), [(51, u'('), (1, u'x'), (... @@ -105,16 +105,16 @@ ... y = x ... """, ... attribs='variables is_alias name value parse_repr') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- parse_repr = <UNKNOWN> +- variables - +- x => VariableDoc for test.x [1] + +- x => VariableDoc for epydoc_test.x [1] | +- is_alias = False | +- name = u'x' | +- value | +- GenericValueDoc [2] | +- parse_repr = u'[1, 2]' - +- y => VariableDoc for test.y [3] + +- y => VariableDoc for epydoc_test.y [3] +- is_alias = True +- name = u'y' +- value @@ -128,33 +128,33 @@ ... [a,(b,[c,d],e),(f,g)] = [1,(2,[3,4],5),(6,7)] ... """, ... attribs='variables is_alias name value') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- a => VariableDoc for test.a [1] + +- a => VariableDoc for epydoc_test.a [1] | +- is_alias = False | +- name = u'a' | +- value = <UNKNOWN> - +- b => VariableDoc for test.b [2] + +- b => VariableDoc for epydoc_test.b [2] | +- is_alias = False | +- name = u'b' | +- value = <UNKNOWN> - +- c => VariableDoc for test.c [3] + +- c => VariableDoc for epydoc_test.c [3] | +- is_alias = False | +- name = u'c' | +- value = <UNKNOWN> - +- d => VariableDoc for test.d [4] + +- d => VariableDoc for epydoc_test.d [4] | +- is_alias = False | +- name = u'd' | +- value = <UNKNOWN> - +- e => VariableDoc for test.e [5] + +- e => VariableDoc for epydoc_test.e [5] | +- is_alias = False | +- name = u'e' | +- value = <UNKNOWN> - +- f => VariableDoc for test.f [6] + +- f => VariableDoc for epydoc_test.f [6] | +- is_alias = False | +- name = u'f' | +- value = <UNKNOWN> - +- g => VariableDoc for test.g [7] + +- g => VariableDoc for epydoc_test.g [7] +- is_alias = False +- name = u'g' +- value = <UNKNOWN> @@ -169,21 +169,21 @@ ... x = y = z = 0 ... """, ... attribs="variables is_alias name value parse_repr") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- parse_repr = <UNKNOWN> +- variables - +- x => VariableDoc for test.x [1] + +- x => VariableDoc for epydoc_test.x [1] | +- is_alias = True | +- name = u'x' | +- value | +- GenericValueDoc [2] | +- parse_repr = u'0' - +- y => VariableDoc for test.y [3] + +- y => VariableDoc for epydoc_test.y [3] | +- is_alias = True | +- name = u'y' | +- value | +- GenericValueDoc [2] (defined above) - +- z => VariableDoc for test.z [4] + +- z => VariableDoc for epydoc_test.z [4] +- is_alias = False +- name = u'z' +- value @@ -197,10 +197,10 @@ ... x = 33 ... """, ... attribs="variables name value parse_repr") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- parse_repr = <UNKNOWN> +- variables - +- x => VariableDoc for test.x [1] + +- x => VariableDoc for epydoc_test.x [1] +- name = u'x' +- value +- GenericValueDoc [2] @@ -216,17 +216,17 @@ ... self.bar = 0 ... """, ... attribs="variables name value") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- Foo => VariableDoc for test.Foo [1] + +- Foo => VariableDoc for epydoc_test.Foo [1] +- name = u'Foo' +- value - +- ClassDoc for test.Foo [2] + +- ClassDoc for epydoc_test.Foo [2] +- variables - +- __init__ => VariableDoc for test.Foo.__init__ [3] + +- __init__ => VariableDoc for epydoc_test.Foo.__init__ [3] +- name = u'__init__' +- value - +- RoutineDoc for test.Foo.__init__ [4] + +- RoutineDoc for epydoc_test.Foo.__init__ [4] Module Control Blocks ===================== @@ -256,15 +256,15 @@ ... else: ... else_gated = 'z'""", ... attribs="variables name") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- elif_gated => VariableDoc for test.elif_gated [1] + +- elif_gated => VariableDoc for epydoc_test.elif_gated [1] | +- name = u'elif_gated' - +- elif_gated2 => VariableDoc for test.elif_gated2 [2] + +- elif_gated2 => VariableDoc for epydoc_test.elif_gated2 [2] | +- name = u'elif_gated2' - +- else_gated => VariableDoc for test.else_gated [3] + +- else_gated => VariableDoc for epydoc_test.else_gated [3] | +- name = u'else_gated' - +- if_gated => VariableDoc for test.if_gated [4] + +- if_gated => VariableDoc for epydoc_test.if_gated [4] +- name = u'if_gated' >>> # DocParser looks inside try/except and try/finally blocks: @@ -279,15 +279,15 @@ ... finally: ... finally_gated = 'z'""", ... attribs="variables name") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- except_gated => VariableDoc for test.except_gated [1] + +- except_gated => VariableDoc for epydoc_test.except_gated [1] | +- name = u'except_gated' - +- except_gated2 => VariableDoc for test.except_gated2 [2] + +- except_gated2 => VariableDoc for epydoc_test.except_gated2 [2] | +- name = u'except_gated2' - +- finally_gated => VariableDoc for test.finally_gated [3] + +- finally_gated => VariableDoc for epydoc_test.finally_gated [3] | +- name = u'finally_gated' - +- try_gated => VariableDoc for test.try_gated [4] + +- try_gated => VariableDoc for epydoc_test.try_gated [4] +- name = u'try_gated' >>> # By default, DocParser does not look inside for blocks @@ -295,7 +295,7 @@ ... for itervar in [5]*3: ... for_gated = 'x'""", ... attribs="variables name") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables = {} >>> # By default, DocParser does not look inside while blocks @@ -303,7 +303,7 @@ ... while condition: ... while_gated = 'x'""", ... attribs="variables name") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables = {} The set of blocks that DocParser looks inside are controlled by a set @@ -318,20 +318,20 @@ ... for itervar in [5]*3: ... for_gated = 'x'""", ... attribs="variables name") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- for_gated => VariableDoc for test.for_gated [1] + +- for_gated => VariableDoc for epydoc_test.for_gated [1] | +- name = u'for_gated' - +- itervar => VariableDoc for test.itervar [2] + +- itervar => VariableDoc for epydoc_test.itervar [2] +- name = u'itervar' >>> runparser(s=""" ... while condition: ... while_gated = 'x'""", ... attribs="variables name") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- while_gated => VariableDoc for test.while_gated [1] + +- while_gated => VariableDoc for epydoc_test.while_gated [1] +- name = u'while_gated' >>> # reset the globals: @@ -353,20 +353,20 @@ ... '''docstring for x. ... (can be multiline)'''""", ... attribs="variables name docstring") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables - +- x => VariableDoc for test.x [1] + +- x => VariableDoc for epydoc_test.x [1] +- docstring = u'docstring for x.\n(can be multiline)' +- name = u'x' >>> runparser(s=""" ... x = 12 #: comment docstring for x""", ... attribs="variables name docstring") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables - +- x => VariableDoc for test.x [1] + +- x => VariableDoc for epydoc_test.x [1] +- docstring = u'comment docstring for x' +- name = u'x' @@ -375,10 +375,10 @@ ... #: (can be multiline) ... x = 12""", ... attribs="variables name docstring") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables - +- x => VariableDoc for test.x [1] + +- x => VariableDoc for epydoc_test.x [1] +- docstring = u'comment docstring for x.\n(can be m... +- name = u'x' @@ -390,10 +390,10 @@ ... x = 12 #: comment2 ... '''string'''""", ... attribs="variables name docstring") - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables - +- x => VariableDoc for test.x [1] + +- x => VariableDoc for epydoc_test.x [1] +- docstring = u'string' +- name = u'x' @@ -408,8 +408,8 @@ ... 'docstring for f' ... print 'inside f' ... """, show="f", exclude='defining_module') - RoutineDoc for test.f [0] - +- canonical_name = DottedName('test', u'f') + RoutineDoc for epydoc_test.f [0] + +- canonical_name = DottedName('epydoc_test', u'f') +- decorators = [] +- docs_extracted_by = 'parser' +- docstring = u'docstring for f' @@ -433,8 +433,8 @@ ... 'docstring for f' ... print 'inside f' ... """, show="f", exclude='defining_module') - RoutineDoc for test.f [0] - +- canonical_name = DottedName('test', u'f') + RoutineDoc for epydoc_test.f [0] + +- canonical_name = DottedName('epydoc_test', u'f') +- decorators = [] +- docs_extracted_by = 'parser' +- docstring = u'docstring for f' @@ -449,8 +449,8 @@ >>> runparser(s=""" ... def f( (x, (y,z)) ): pass ... """, show="f", exclude='defining_module') - RoutineDoc for test.f [0] - +- canonical_name = DottedName('test', u'f') + RoutineDoc for epydoc_test.f [0] + +- canonical_name = DottedName('epydoc_test', u'f') +- decorators = [] +- docs_extracted_by = 'parser' +- kwarg = None @@ -467,13 +467,13 @@ ... def f(cls, x): 'docstring for f' ... """, ... attribs='variables value docstring posargs') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables - +- f => VariableDoc for test.f [1] + +- f => VariableDoc for epydoc_test.f [1] +- docstring = <UNKNOWN> +- value - +- ClassMethodDoc for test.f [2] + +- ClassMethodDoc for epydoc_test.f [2] +- docstring = u'docstring for f' +- posargs = [u'cls', u'x'] @@ -492,68 +492,68 @@ ... class Z(B.__bases__[0]): "calculated base" # not handled! ... """, ... attribs='variables value bases docstring') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables - +- A => VariableDoc for test.A [1] + +- A => VariableDoc for epydoc_test.A [1] | +- docstring = <UNKNOWN> | +- value - | +- ClassDoc for test.A [2] + | +- ClassDoc for epydoc_test.A [2] | +- bases = [] | +- docstring = u'no bases' | +- variables - | +- Nested => VariableDoc for test.A.Nested [3] + | +- Nested => VariableDoc for epydoc_test.A.Nested [3] | +- docstring = <UNKNOWN> | +- value - | +- ClassDoc for test.A.Nested [4] + | +- ClassDoc for epydoc_test.A.Nested [4] | +- bases = [] | +- docstring = u'nested class' | +- variables = {} - +- B => VariableDoc for test.B [5] + +- B => VariableDoc for epydoc_test.B [5] | +- docstring = <UNKNOWN> | +- value - | +- ClassDoc for test.B [6] + | +- ClassDoc for epydoc_test.B [6] | +- bases - | | +- ClassDoc for test.A [2] (defined above) + | | +- ClassDoc for epydoc_test.A [2] (defined above) | +- docstring = u'single base' | +- variables = {} - +- C => VariableDoc for test.C [7] + +- C => VariableDoc for epydoc_test.C [7] | +- docstring = <UNKNOWN> | +- value - | +- ClassDoc for test.C [8] + | +- ClassDoc for epydoc_test.C [8] | +- bases - | | +- ClassDoc for test.A [2] (defined above) - | | +- ClassDoc for test.B [6] (defined above) + | | +- ClassDoc for epydoc_test.A [2] (defined above) + | | +- ClassDoc for epydoc_test.B [6] (defined above) | +- docstring = u'multiple bases' | +- variables = {} - +- D => VariableDoc for test.D [9] + +- D => VariableDoc for epydoc_test.D [9] | +- docstring = <UNKNOWN> | +- value - | +- ClassDoc for test.D [10] + | +- ClassDoc for epydoc_test.D [10] | +- bases - | | +- ClassDoc for test.A [2] (defined above) + | | +- ClassDoc for epydoc_test.A [2] (defined above) | +- docstring = u'extra parens around base' | +- variables = {} - +- E => VariableDoc for test.E [11] + +- E => VariableDoc for epydoc_test.E [11] | +- docstring = <UNKNOWN> | +- value - | +- ClassDoc for test.E [12] + | +- ClassDoc for epydoc_test.E [12] | +- bases - | | +- ClassDoc for test.A.Nested [4] (defined above) + | | +- ClassDoc for epydoc_test.A.Nested [4] (defined above) | +- docstring = u'dotted name' | +- variables = {} - +- F => VariableDoc for test.F [13] + +- F => VariableDoc for epydoc_test.F [13] | +- docstring = <UNKNOWN> | +- value - | +- ClassDoc for test.F [14] + | +- ClassDoc for epydoc_test.F [14] | +- bases - | | +- ClassDoc for test.A.Nested [4] (defined above) + | | +- ClassDoc for epydoc_test.A.Nested [4] (defined above) | +- docstring = u'parens with dotted name' | +- variables = {} - +- Z => VariableDoc for test.Z [15] + +- Z => VariableDoc for epydoc_test.Z [15] +- docstring = <UNKNOWN> +- value - +- ClassDoc for test.Z [16] + +- ClassDoc for epydoc_test.Z [16] +- bases = <UNKNOWN> +- docstring = u'calculated base' +- variables = {} @@ -572,10 +572,10 @@ ... del y ... """, ... attribs='variables value parse_repr is_alias') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- parse_repr = <UNKNOWN> +- variables - +- x => VariableDoc for test.x [1] + +- x => VariableDoc for epydoc_test.x [1] +- is_alias = True +- value +- GenericValueDoc [2] @@ -595,9 +595,9 @@ ... del [[[[f]]]] ... """, ... attribs='variables') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- g => VariableDoc for test.g [1] + +- g => VariableDoc for epydoc_test.g [1] >>> runparser(s=""" ... a=b=c=d=e=f=g=1 ... del a,b @@ -605,17 +605,17 @@ ... del [e,f] ... """, ... attribs='variables') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- g => VariableDoc for test.g [1] + +- g => VariableDoc for epydoc_test.g [1] >>> runparser(s=""" ... a=b=c=d=e=f=g=1 ... del ((a, (((((b, c)), d), [e]))), f) ... """, ... attribs='variables') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- g => VariableDoc for test.g [1] + +- g => VariableDoc for epydoc_test.g [1] The right-hand side of a `del` statement may contain a dotted name, in which case the named variable should be deleted from its containing @@ -626,13 +626,13 @@ ... del A.a ... """, ... attribs='variables value local_variables') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- A => VariableDoc for test.A [1] + +- A => VariableDoc for epydoc_test.A [1] +- value - +- ClassDoc for test.A [2] + +- ClassDoc for epydoc_test.A [2] +- variables - +- b => VariableDoc for test.A.b [3] + +- b => VariableDoc for epydoc_test.A.b [3] +- value +- GenericValueDoc [4] @@ -647,9 +647,9 @@ ... del ([b], a[1]) ... """, ... attribs='variables') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- a => VariableDoc for test.a [1] + +- a => VariableDoc for epydoc_test.a [1] Single-Line Blocks ================== @@ -660,13 +660,13 @@ ... ... """, ... attribs='variables value docstring') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables - +- A => VariableDoc for test.A [1] + +- A => VariableDoc for epydoc_test.A [1] +- docstring = <UNKNOWN> +- value - +- ClassDoc for test.A [2] + +- ClassDoc for epydoc_test.A [2] +- docstring = u'docstring for A' +- variables = {} @@ -678,12 +678,12 @@ ... from re import match ... """, ... attribs='variables value is_imported') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- match => VariableDoc for test.match [1] + +- match => VariableDoc for epydoc_test.match [1] | +- is_imported = True | +- value = <UNKNOWN> - +- re => VariableDoc for test.re [2] + +- re => VariableDoc for epydoc_test.re [2] +- is_imported = True +- value = <UNKNOWN> @@ -691,15 +691,15 @@ ... from re import match as much, split, sub as scuba ... """, ... attribs='variables name imported_from') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- much => VariableDoc for test.much [1] + +- much => VariableDoc for epydoc_test.much [1] | +- imported_from = DottedName(u're', u'match') | +- name = u'much' - +- scuba => VariableDoc for test.scuba [2] + +- scuba => VariableDoc for epydoc_test.scuba [2] | +- imported_from = DottedName(u're', u'sub') | +- name = u'scuba' - +- split => VariableDoc for test.split [3] + +- split => VariableDoc for epydoc_test.split [3] +- imported_from = DottedName(u're', u'split') +- name = u'split' @@ -711,13 +711,13 @@ ... u"unicode in docstring: \u1000" ... """, ... attribs='variables value docstring') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables - +- f => VariableDoc for test.f [1] + +- f => VariableDoc for epydoc_test.f [1] +- docstring = <UNKNOWN> +- value - +- RoutineDoc for test.f [2] + +- RoutineDoc for epydoc_test.f [2] +- docstring = u'unicode in docstring: \u1000' Instance Variables @@ -735,27 +735,27 @@ ... ... """, ... attribs='variables value is_instvar docstring local_variables') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables - +- A => VariableDoc for test.A [1] + +- A => VariableDoc for epydoc_test.A [1] +- docstring = <UNKNOWN> +- is_instvar = <UNKNOWN> +- value - +- ClassDoc for test.A [2] + +- ClassDoc for epydoc_test.A [2] +- docstring = <UNKNOWN> +- variables - +- __init__ => VariableDoc for test.A.__init__ [3] + +- __init__ => VariableDoc for epydoc_test.A.__init__ [3] | +- docstring = <UNKNOWN> | +- is_instvar = <UNKNOWN> | +- value - | +- RoutineDoc for test.A.__init__ [4] + | +- RoutineDoc for epydoc_test.A.__init__ [4] | +- docstring = <UNKNOWN> - +- y => VariableDoc for test.A.y [5] + +- y => VariableDoc for epydoc_test.A.y [5] | +- docstring = u'docstring for y' | +- is_instvar = True | +- value = <UNKNOWN> - +- z => VariableDoc for test.A.z [6] + +- z => VariableDoc for epydoc_test.A.z [6] +- docstring = u'docstring for z' +- is_instvar = True +- value = <UNKNOWN> @@ -768,13 +768,13 @@ ... A.x = 22 ... """, ... attribs='variables value local_variables') - ModuleDoc for test [0] + ModuleDoc for epydoc_test [0] +- variables - +- A => VariableDoc for test.A [1] + +- A => VariableDoc for epydoc_test.A [1] +- value - +- ClassDoc for test.A [2] + +- ClassDoc for epydoc_test.A [2] +- variables - +- x => VariableDoc for test.A.x [3] + +- x => VariableDoc for epydoc_test.A.x [3] +- value +- GenericValueDoc [4] Modified: trunk/epydoc/src/epydoc/test/epytext.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/epytext.doctest 2007-02-13 14:27:23 UTC (rev 1471) +++ trunk/epydoc/src/epydoc/test/epytext.doctest 2007-02-13 15:27:45 UTC (rev 1472) @@ -295,14 +295,14 @@ ... return (v or '').rstrip() >>> print epytext2html("{1:{2:3}}") - {1:{2:3}} +{1:{2:3}} >>> print epytext2html("C{{1:{2:3}}}") <code>{1:{2:3}}</code> >>> print epytext2html("{1:C{{2:3}}}") {1:<code>{2:3}</code>} >>> print epytext2html("{{{}{}}{}}") - {{{}{}}{}} +{{{}{}}{}} >>> print epytext2html("{{E{lb}E{lb}E{lb}}}") - {{{{{}} +{{{{{}} Property changes on: trunk/epydoc/src/epydoc/test/javadoc.doctest ___________________________________________________________________ Name: svn:eol-style + native Property changes on: trunk/epydoc/src/epydoc/test/plaintext.doctest ___________________________________________________________________ Name: svn:eol-style + native Property changes on: trunk/epydoc/src/epydoc/test/pyval_repr.doctest ___________________________________________________________________ Name: svn:eol-style + native Property changes on: trunk/epydoc/src/epydoc/test/restructuredtext.doctest ___________________________________________________________________ Name: svn:eol-style + native Modified: trunk/epydoc/src/epydoc/test/util.py =================================================================== --- trunk/epydoc/src/epydoc/test/util.py 2007-02-13 14:27:23 UTC (rev 1471) +++ trunk/epydoc/src/epydoc/test/util.py 2007-02-13 15:27:45 UTC (rev 1472) @@ -79,7 +79,7 @@ # Write it to a temp file. tmp_dir = write_pystring_to_tmp_dir(s) # Parse it. - val_doc = parse_docs(out.name) + val_doc = parse_docs(os.path.join(tmp_dir, 'epydoc_test.py')) if show is not None: for name in show.split('.'): if isinstance(val_doc, ClassDoc): @@ -154,9 +154,8 @@ # Build docs for it docindex = build_doc_index([path], introspect, parse) if docindex is None: return - try: del sys.modules['enc_test'] - except: pass - # Write html output. + sys.modules.pop('enc_test', None) + # Write html output. writer = HTMLWriter(docindex, mark_docstrings=True) writer.write(tmp_dir) for file in os.listdir(tmp_dir): @@ -182,7 +181,7 @@ try: os.unlink(os.path.join(tmp_dir, 'epydoc_test.pyc')) except OSError: pass os.rmdir(tmp_dir) - del sys.modules['epydoc_test'] + sys.modules.pop('epydoc_test', None) def to_plain(docstring): """Conver a parsed docstring into plain text""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-02-14 03:51:28
|
Revision: 1496 http://svn.sourceforge.net/epydoc/?rev=1496&view=rev Author: edloper Date: 2007-02-13 19:51:27 -0800 (Tue, 13 Feb 2007) Log Message: ----------- - Register a logger, to print any warnings or errors - Added a test case for SF bug #1653486 to docbuilder.doctest - Modified 'specifying constructor signature in class docstring' examples to eliminate warnings (eg duplicate @type for param) Modified Paths: -------------- trunk/epydoc/src/epydoc/test/apidoc.doctest trunk/epydoc/src/epydoc/test/docbuilder.doctest trunk/epydoc/src/epydoc/test/docintrospecter.doctest trunk/epydoc/src/epydoc/test/docparser.doctest trunk/epydoc/src/epydoc/test/encoding.doctest trunk/epydoc/src/epydoc/test/epytext.doctest trunk/epydoc/src/epydoc/test/javadoc.doctest trunk/epydoc/src/epydoc/test/plaintext.doctest trunk/epydoc/src/epydoc/test/pyval_repr.doctest trunk/epydoc/src/epydoc/test/restructuredtext.doctest Modified: trunk/epydoc/src/epydoc/test/apidoc.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/apidoc.doctest 2007-02-14 03:49:21 UTC (rev 1495) +++ trunk/epydoc/src/epydoc/test/apidoc.doctest 2007-02-14 03:51:27 UTC (rev 1496) @@ -9,6 +9,9 @@ >>> from epydoc.apidoc import * + >>> from epydoc.test.util import print_warnings + >>> print_warnings() + Unknown Value ============= Epydoc defines a special object, epydoc.apidoc.UNKNOWN, which is used Modified: trunk/epydoc/src/epydoc/test/docbuilder.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-14 03:49:21 UTC (rev 1495) +++ trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-14 03:51:27 UTC (rev 1496) @@ -14,6 +14,9 @@ >>> from epydoc.test.util import runbuilder + >>> from epydoc.test.util import print_warnings + >>> print_warnings() + Docformat selection =================== @@ -72,11 +75,7 @@ ... @type a: date ... """ ... def __init__(self, a): - ... """The ctor docstring. - ... - ... @type a: str - ... """ - ... pass + ... """The ctor docstring.""" ... ''', ... build="Foo", ... attribs="variables name value " @@ -106,10 +105,7 @@ ... @type a: str ... """ ... def __init__(self, **kwargs): - ... """The ctor docstring. - ... - ... @type a: str - ... """ + ... """The ctor docstring.""" ... ''', ... build="Foo", ... attribs="variables name value " @@ -135,7 +131,7 @@ ... @param a: a param. ... @type a: str ... """ - ... def __init__(self): + ... def __init__(self, a): ... pass ... ''', ... build="Foo", @@ -150,7 +146,7 @@ +- arg_descrs = [([u'a'], ... +- arg_types = {u'a': ... +- kwarg = None - +- posargs = ['self'] + +- posargs = ['self', 'a'] +- vararg = None Exceptions can be put in the docstring class, and they are assigned to the @@ -336,3 +332,30 @@ h -99 u'??' i 0 u'[Foo(), 1, 2]' j 0 u'[<epydoc_test.Foo instance at ...>, 1, 2, 3]' + +Merging is_imported +=================== +When we do both parsing & introspection, and merge the result, we +should trust the introspected APIDoc's is_imported value more than the +parsed APIDoc. In particular, in the following example, `x` should +have `is_imported=True`. But if we can't tell from introspection, +then use parse info -- so `y` should be imported, but `z` should not. + + >>> import epydoc.docintrospecter + >>> epydoc.docintrospecter.clear_cache() + >>> runbuilder(s=''' + ... import cStringIO + ... from re import MULTILINE as y + ... x = cStringIO + ... z = y + ... ''', attribs=("variables is_imported ")) + ModuleDoc for epydoc_test [0] + +- variables + +- cStringIO => VariableDoc for epydoc_test.cStringIO [1] + | +- is_imported = True + +- x => VariableDoc for epydoc_test.x [2] + | +- is_imported = True + +- y => VariableDoc for epydoc_test.y [3] + | +- is_imported = True + +- z => VariableDoc for epydoc_test.z [4] + +- is_imported = False Modified: trunk/epydoc/src/epydoc/test/docintrospecter.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2007-02-14 03:49:21 UTC (rev 1495) +++ trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2007-02-14 03:51:27 UTC (rev 1496) @@ -17,6 +17,9 @@ >>> from epydoc.test.util import runintrospecter + >>> from epydoc.test.util import print_warnings + >>> print_warnings() + Module Variables ================ Each variable defined by a module is encoded as a `VariableDoc`, whose Modified: trunk/epydoc/src/epydoc/test/docparser.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docparser.doctest 2007-02-14 03:49:21 UTC (rev 1495) +++ trunk/epydoc/src/epydoc/test/docparser.doctest 2007-02-14 03:51:27 UTC (rev 1496) @@ -17,6 +17,9 @@ >>> from epydoc.test.util import runparser + >>> from epydoc.test.util import print_warnings + >>> print_warnings() + Module Variables from Assignment Statements =========================================== Variables are extracted from any assignment statements in the module, @@ -390,6 +393,7 @@ ... x = 12 #: comment2 ... '''string'''""", ... attribs="variables name docstring") + <UNKNOWN> has both a comment-docstring and a normal (string) docstring; ignoring the comment-docstring. ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables @@ -492,6 +496,7 @@ ... class Z(B.__bases__[0]): "calculated base" # not handled! ... """, ... attribs='variables value bases docstring') + Unable to extract the base list for epydoc_test.Z: Bad dotted name ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables Modified: trunk/epydoc/src/epydoc/test/encoding.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/encoding.doctest 2007-02-14 03:49:21 UTC (rev 1495) +++ trunk/epydoc/src/epydoc/test/encoding.doctest 2007-02-14 03:51:27 UTC (rev 1496) @@ -10,7 +10,9 @@ docstrings, it monkey-patches the HMTLwriter.docstring_to_html() method.) - >>> from epydoc.test.util import print_warnings, testencoding + >>> from epydoc.test.util import testencoding + + >>> from epydoc.test.util import print_warnings >>> print_warnings() Encoding Tests Modified: trunk/epydoc/src/epydoc/test/epytext.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/epytext.doctest 2007-02-14 03:49:21 UTC (rev 1495) +++ trunk/epydoc/src/epydoc/test/epytext.doctest 2007-02-14 03:51:27 UTC (rev 1496) @@ -5,6 +5,9 @@ time, esp. given that it's so much easier to write tests with doctest than it was with unittest. + >>> from epydoc.test.util import print_warnings + >>> print_warnings() + >>> from epydoc.markup import epytext >>> import re >>> def testparse(s): Modified: trunk/epydoc/src/epydoc/test/javadoc.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/javadoc.doctest 2007-02-14 03:49:21 UTC (rev 1495) +++ trunk/epydoc/src/epydoc/test/javadoc.doctest 2007-02-14 03:51:27 UTC (rev 1496) @@ -1,5 +1,7 @@ -Regression Testing for plaintext -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +Regression Testing for javadoc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + >>> from epydoc.test.util import print_warnings + >>> print_warnings() Summary ======= Modified: trunk/epydoc/src/epydoc/test/plaintext.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/plaintext.doctest 2007-02-14 03:49:21 UTC (rev 1495) +++ trunk/epydoc/src/epydoc/test/plaintext.doctest 2007-02-14 03:51:27 UTC (rev 1496) @@ -1,5 +1,7 @@ Regression Testing for plaintext ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + >>> from epydoc.test.util import print_warnings + >>> print_warnings() Summary ======= Modified: trunk/epydoc/src/epydoc/test/pyval_repr.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/pyval_repr.doctest 2007-02-14 03:49:21 UTC (rev 1495) +++ trunk/epydoc/src/epydoc/test/pyval_repr.doctest 2007-02-14 03:51:27 UTC (rev 1496) @@ -280,6 +280,9 @@ ... score: 1 (ok) + >>> from epydoc.test.util import print_warnings + >>> print_warnings() + Summary ======= To generate summary-reprs, use maxlines=1 and linebreakok=False: Modified: trunk/epydoc/src/epydoc/test/restructuredtext.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/restructuredtext.doctest 2007-02-14 03:49:21 UTC (rev 1495) +++ trunk/epydoc/src/epydoc/test/restructuredtext.doctest 2007-02-14 03:51:27 UTC (rev 1496) @@ -2,6 +2,9 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ :RequireModule: docutils + >>> from epydoc.test.util import print_warnings + >>> print_warnings() + Summary ======= The implementation of the summaization function works as expected. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-02-14 08:38:46
|
Revision: 1502 http://svn.sourceforge.net/epydoc/?rev=1502&view=rev Author: edloper Date: 2007-02-14 00:38:44 -0800 (Wed, 14 Feb 2007) Log Message: ----------- - Fixed various test bugs; updated tests so now they run cleanly under Python 2.3 (assuming you're using a recent version of doctest.py) Modified Paths: -------------- trunk/epydoc/src/epydoc/test/__init__.py trunk/epydoc/src/epydoc/test/docbuilder.doctest trunk/epydoc/src/epydoc/test/docintrospecter.doctest trunk/epydoc/src/epydoc/test/docparser.doctest trunk/epydoc/src/epydoc/test/encoding.doctest trunk/epydoc/src/epydoc/test/pyval_repr.doctest trunk/epydoc/src/epydoc/test/restructuredtext.doctest trunk/epydoc/src/epydoc/test/util.py Modified: trunk/epydoc/src/epydoc/test/__init__.py =================================================================== --- trunk/epydoc/src/epydoc/test/__init__.py 2007-02-14 08:36:59 UTC (rev 1501) +++ trunk/epydoc/src/epydoc/test/__init__.py 2007-02-14 08:38:44 UTC (rev 1502) @@ -11,9 +11,42 @@ """ __docformat__ = 'epytext en' -import unittest, doctest, epydoc, os, os.path, re +import unittest, doctest, epydoc, os, os.path, re, sys def main(): + try: + doctest.register_optionflag + except: + print ("\n" + "The regression test suite requires a more recent version of\n" + "doctest (e.g., the version that ships with Python 2.4 or 2.5).\n" + "Please place a new version of doctest on your path before \n" + "running the test suite.\n") + return + + + PY24 = doctest.register_optionflag('PYTHON2.4') + """Flag indicating that a doctest example requires Python 2.4+""" + + PY25 = doctest.register_optionflag('PYTHON2.5') + """Flag indicating that a doctest example requires Python 2.5+""" + + class DocTestParser(doctest.DocTestParser): + """ + Custom doctest parser that adds support for two new flags + +PYTHON2.4 and +PYTHON2.5. + """ + def parse(self, string, name='<string>'): + pieces = doctest.DocTestParser.parse(self, string, name) + for i, val in enumerate(pieces): + if (isinstance(val, doctest.Example) and + ((val.options.get(PY24, False) and + sys.version[:2] < (2,4)) or + (val.options.get(PY25, False) and + sys.version[:2] < (2,5)))): + pieces[i] = doctest.Example('1', '1') + return pieces + # Turn on debugging. epydoc.DEBUG = True @@ -21,6 +54,9 @@ options = doctest.ELLIPSIS doctest.set_unittest_reportflags(doctest.REPORT_UDIFF) + # Use a custom parser + parser = DocTestParser() + # Find all test cases. tests = [] testdir = os.path.join(os.path.split(__file__)[0]) @@ -28,7 +64,8 @@ for filename in os.listdir(testdir): if (filename.endswith('.doctest') and check_requirements(os.path.join(testdir, filename))): - tests.append(doctest.DocFileSuite(filename, optionflags=options)) + tests.append(doctest.DocFileSuite(filename, optionflags=options, + parser=parser)) # Run all test cases. unittest.TextTestRunner(verbosity=2).run(unittest.TestSuite(tests)) @@ -45,8 +82,8 @@ requirements are listed.) """ s = open(filename).read() - for m in re.finditer('(?mi)^[ ]*\:RequireModule:[ ]+(\w+)[ ]*$', s): - module = m.group(1) + for m in re.finditer('(?mi)^[ ]*\:RequireModule:(.*)$', s): + module = m.group(1).strip() try: __import__(module) except ImportError: Modified: trunk/epydoc/src/epydoc/test/docbuilder.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-14 08:36:59 UTC (rev 1501) +++ trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-14 08:38:44 UTC (rev 1502) @@ -177,10 +177,10 @@ +- name = '__init__' +- value +- RoutineDoc for epydoc_test.Foo.__init__ [2] - +- arg_descrs = [([u'x'], [u'first', u'param']), ... + +- arg_descrs = [([u'x'], u'first param'), ([u'y'], u... +- arg_types = {} +- docstring = u'__init__ doc' - +- exception_descrs = [(DottedName(u'ValueError'), ... + +- exception_descrs = [(DottedName(u'ValueError'), <epydoc.... +- kwarg = None +- posargs = [u'x', u'y'] +- vararg = None @@ -242,8 +242,8 @@ | +- type_descr = None | +- value | +- RoutineDoc for epydoc_test.Foo.__init__ [2] - | +- arg_descrs = [([u'a'], [u'init', u'param.'])] - | +- arg_types = {u'a': [u'date']} + | +- arg_descrs = [([u'a'], u'init param.')] + | +- arg_types = {u'a': u'date'} | +- kwarg = None | +- posargs = ['self', 'a'] | +- vararg = None @@ -276,8 +276,8 @@ | +- type_descr = None | +- value | +- RoutineDoc for epydoc_test.Foo.__init__ [2] - | +- arg_descrs = [([u'a'], [u'init', u'param.'])] - | +- arg_types = {u'a': [u'string']} + | +- arg_descrs = [([u'a'], u'init param.')] + | +- arg_types = {u'a': u'string'} | +- kwarg = None | +- posargs = ['self', 'a'] | +- vararg = None @@ -294,6 +294,7 @@ current behavior; but should be replaced when we change the behavior. >>> from epydoc.test.util import buildvaluedoc + >>> from epydoc.compat import * >>> def print_py_reprs(s): ... value_doc = buildvaluedoc(s) ... print 'Var Score Repr\n'+'-'*50 Modified: trunk/epydoc/src/epydoc/test/docintrospecter.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2007-02-14 08:36:59 UTC (rev 1501) +++ trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2007-02-14 08:38:44 UTC (rev 1502) @@ -252,7 +252,8 @@ Decorators & Wrapper Assignments ================================ - >>> runintrospecter(s=""" + >>> runintrospecter( # doctest: +PYTHON2.4 + ... s=""" ... @classmethod ... def f(cls, x): 'docstring for f' ... """, introspect="f") Modified: trunk/epydoc/src/epydoc/test/docparser.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docparser.doctest 2007-02-14 08:36:59 UTC (rev 1501) +++ trunk/epydoc/src/epydoc/test/docparser.doctest 2007-02-14 08:38:44 UTC (rev 1502) @@ -82,7 +82,7 @@ | | +- ModuleDoc for epydoc_test [0] (defined above) | +- docs_extracted_by = 'parser' | +- parse_repr = u'[1, 2, 3]+ [4, 5]' - | +- toktree = [[(51, u'['), (2, u'1'), (51, u','), ... + | +- toktree = ... +- z => VariableDoc for epydoc_test.z [5] +- container | +- ModuleDoc for epydoc_test [0] (defined above) @@ -98,7 +98,7 @@ | +- ModuleDoc for epydoc_test [0] (defined above) +- docs_extracted_by = 'parser' +- parse_repr = u'f(x, y)' - +- toktree = [(1, u'f'), [(51, u'('), (1, u'x'), (... + +- toktree = ... In this example, DocParser decides that the assignment to y is creating an alias. The same `ValueDoc` is shared by both variables. @@ -466,11 +466,12 @@ Decorators & Wrapper Assignments ================================ - >>> runparser(s=""" + >>> runparser( # doctest: +PYTHON2.4 + ... s=""" ... @classmethod ... def f(cls, x): 'docstring for f' ... """, - ... attribs='variables value docstring posargs') + ... attribs='variables value docstring posargs') ModuleDoc for epydoc_test [0] +- docstring = <UNKNOWN> +- variables Modified: trunk/epydoc/src/epydoc/test/encoding.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/encoding.doctest 2007-02-14 08:36:59 UTC (rev 1501) +++ trunk/epydoc/src/epydoc/test/encoding.doctest 2007-02-14 08:38:44 UTC (rev 1502) @@ -122,7 +122,7 @@ >>> testencoding('''# -*- coding: shift_jis -*- ... """abc ABC 123 \xA1 \xA2 \xA3""" - ... ''') + ... ''') # doctest: +PYTHON2.4 abc ABC 123 。 「 」 Str/Unicode Test Modified: trunk/epydoc/src/epydoc/test/pyval_repr.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/pyval_repr.doctest 2007-02-14 08:36:59 UTC (rev 1501) +++ trunk/epydoc/src/epydoc/test/pyval_repr.doctest 2007-02-14 08:38:44 UTC (rev 1502) @@ -42,7 +42,7 @@ Strings have their quotation marks tagged as 'quote'. Characters are escaped using the 'string-escape' encoding. - >>> color(''.join(chr(i) for i in range(256))) + >>> color(''.join([chr(i) for i in range(256)])) <code class="variable-quote">'''</code><code class="variable-string">\x00\x01\x02\x03\x04\x05\x06\x07\x08\</code>↵ <code class="variable-string">t</code> <code class="variable-string">\x0b\x0c\r\x0e\x0f\x10\x11\x12\x13\x14\x</code>↵ @@ -129,7 +129,7 @@ >>> def textcontent(elt): ... if isinstance(elt, basestring): return elt - ... else: return ''.join(textcontent(c) for c in elt.children) + ... else: return ''.join([textcontent(c) for c in elt.children]) >>> import re >>> def color_re(s, check_roundtrip=True): Modified: trunk/epydoc/src/epydoc/test/restructuredtext.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/restructuredtext.doctest 2007-02-14 08:36:59 UTC (rev 1501) +++ trunk/epydoc/src/epydoc/test/restructuredtext.doctest 2007-02-14 08:38:44 UTC (rev 1502) @@ -148,8 +148,8 @@ | +- type_descr = None | +- value | +- RoutineDoc for epydoc_test.Foo.__init__ [2] - | +- arg_descrs = [([u'a'], [u'init', u'param.'])] - | +- arg_types = {u'a': [u'string']} + | +- arg_descrs = [([u'a'], u'init param.')] + | +- arg_types = {u'a': u'string'} | +- exception_descrs = [(DottedName(u'ValueError'), ... | +- kwarg = None | +- posargs = ['self', 'a'] Modified: trunk/epydoc/src/epydoc/test/util.py =================================================================== --- trunk/epydoc/src/epydoc/test/util.py 2007-02-14 08:36:59 UTC (rev 1501) +++ trunk/epydoc/src/epydoc/test/util.py 2007-02-14 08:38:44 UTC (rev 1502) @@ -188,7 +188,7 @@ """Conver a parsed docstring into plain text""" if isinstance(docstring, ParsedDocstring): docstring = docstring.to_plaintext(None) - return docstring.rsplit() + return docstring.rstrip() def fun_to_plain(val_doc): """Convert parsed docstrings in text from a RoutineDoc""" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ed...@us...> - 2007-02-14 08:40:30
|
Revision: 1503 http://svn.sourceforge.net/epydoc/?rev=1503&view=rev Author: edloper Date: 2007-02-14 00:40:29 -0800 (Wed, 14 Feb 2007) Log Message: ----------- - Test cases for zope2 and zope3 introspection support Added Paths: ----------- trunk/epydoc/src/epydoc/test/zope2.doctest trunk/epydoc/src/epydoc/test/zope3.doctest Added: trunk/epydoc/src/epydoc/test/zope2.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/zope2.doctest (rev 0) +++ trunk/epydoc/src/epydoc/test/zope2.doctest 2007-02-14 08:40:29 UTC (rev 1503) @@ -0,0 +1,57 @@ +Regression Testing for Zope 2 support +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +:RequireModule: ExtensionClass + + >>> from epydoc.test.util import runintrospecter + +We treat extension classes as if they were classes: + + >>> from ExtensionClass import ExtensionClass + + >>> runintrospecter(s=''' + ... from ExtensionClass import ExtensionClass + ... ''', attribs='variables value pyval', + ... introspect='ExtensionClass') + ClassDoc [0] + +- pyval = <extension class ExtensionClass at 40... + +- variables + +- __basicnew__ => VariableDoc for __basicnew__ [1] + | +- value + | +- RoutineDoc [2] + | +- pyval = <CMethod object at ...> + +- __call__ => VariableDoc for __call__ [3] + | +- value + | +- RoutineDoc [4] + | +- pyval = <CMethod object at ...> + +- __delattr__ => VariableDoc for __delattr__ [5] + | +- value + | +- RoutineDoc [6] + | +- pyval = <CMethod object at ...> + +- __getattr__ => VariableDoc for __getattr__ [7] + | +- value + | +- RoutineDoc [8] + | +- pyval = <CMethod object at ...> + +- __init__ => VariableDoc for __init__ [9] + | +- value + | +- RoutineDoc [10] + | +- pyval = <CMethod object at ...> + +- __reduce__ => VariableDoc for __reduce__ [11] + | +- value + | +- RoutineDoc [12] + | +- pyval = <CMethod object at ...> + +- __repr__ => VariableDoc for __repr__ [13] + | +- value + | +- RoutineDoc [14] + | +- pyval = <CMethod object at ...> + +- __setattr__ => VariableDoc for __setattr__ [15] + | +- value + | +- RoutineDoc [16] + | +- pyval = <CMethod object at ...> + +- inheritedAttribute => VariableDoc for inheritedAttribute [17] + +- value + +- RoutineDoc [18] + +- pyval = <CMethod object at ...> + +(If we didn't add special support, `ExtensionClass` would be a +`GenericValueDoc`.) + Added: trunk/epydoc/src/epydoc/test/zope3.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/zope3.doctest (rev 0) +++ trunk/epydoc/src/epydoc/test/zope3.doctest 2007-02-14 08:40:29 UTC (rev 1503) @@ -0,0 +1,27 @@ +Regression Testing for Zope 3 support +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +:RequireModule: zope.interface + + >>> from epydoc.test.util import runintrospecter + +We treat zope interface objects as if they were classes: + + >>> runintrospecter(s=''' + ... from zope.interface import Interface, Attribute + ... class IExample(Interface): + ... """This interface represents a generic example.""" + ... + ... text = Attribute("The text of the example") + ... + ... def setText(text): + ... "This method writes the passed text to the text attribute." + ... + ... def getText(): + ... "This method returns the value of the text attribute." + ... ''', attribs='pyval canonical_name', introspect='IExample') + ClassDoc for epydoc_test.IExample [0] + +- canonical_name = DottedName('epydoc_test', 'IExample') + +- pyval = <InterfaceClass epydoc_test.IExample> + +(If we didn't add special support, `IExample` would be a +`GenericValueDoc`.) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dva...@us...> - 2007-02-19 23:00:03
|
Revision: 1536 http://svn.sourceforge.net/epydoc/?rev=1536&view=rev Author: dvarrazzo Date: 2007-02-19 14:59:58 -0800 (Mon, 19 Feb 2007) Log Message: ----------- - Fixed docstrings so they correctly link to the Epydoc API. Currently it is required to use `register_canonical_role()` instead of `register_local_role()` in `xlink.create_api_role()` Modified Paths: -------------- trunk/epydoc/src/epydoc/test/apidoc.doctest trunk/epydoc/src/epydoc/test/docbuilder.doctest trunk/epydoc/src/epydoc/test/docintrospecter.doctest trunk/epydoc/src/epydoc/test/docparser.doctest trunk/epydoc/src/epydoc/test/pyval_repr.doctest trunk/epydoc/src/epydoc/test/zope2.doctest trunk/epydoc/src/epydoc/test/zope3.doctest Modified: trunk/epydoc/src/epydoc/test/apidoc.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/apidoc.doctest 2007-02-19 22:55:22 UTC (rev 1535) +++ trunk/epydoc/src/epydoc/test/apidoc.doctest 2007-02-19 22:59:58 UTC (rev 1536) @@ -2,7 +2,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This file serves to provide both documentation and regression tests for the epydoc.apidoc module. The main purpose of this module is to -define the `APIDoc` class hierarchy, which is used to encode API +define the :epydoc:`APIDoc` class hierarchy, which is used to encode API documentation about Python programs. The API documentation for a Python program is encoded using a graph of `APIDoc` objects, each of which encodes information about a single Python variable or value. Modified: trunk/epydoc/src/epydoc/test/docbuilder.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-19 22:55:22 UTC (rev 1535) +++ trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-19 22:59:58 UTC (rev 1536) @@ -338,9 +338,9 @@ =================== When we do both parsing & introspection, and merge the result, we should trust the introspected APIDoc's is_imported value more than the -parsed APIDoc. In particular, in the following example, `x` should +parsed APIDoc. In particular, in the following example, ``x`` should have `is_imported=True`. But if we can't tell from introspection, -then use parse info -- so `y` should be imported, but `z` should not. +then use parse info -- so ``y`` should be imported, but ``z`` should not. >>> import epydoc.docintrospecter >>> epydoc.docintrospecter.clear_cache() Modified: trunk/epydoc/src/epydoc/test/docintrospecter.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2007-02-19 22:55:22 UTC (rev 1535) +++ trunk/epydoc/src/epydoc/test/docintrospecter.doctest 2007-02-19 22:59:58 UTC (rev 1536) @@ -2,16 +2,16 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The `epydoc.docintrospecter` module is used to extract API documentation by introspecting Python objects directy. Its primary interface is -`introspect_docs()`, which takes a Python object, and returns a +`docintrospecter.introspect_docs()`, which takes a Python object, and returns a `ValueDoc` describing that value. Test Function ============= This test function takes a string containing the contents of a module. It writes the string contents to a file, imports the file as a module, -and uses `introspect_docs` to introspect it, and pretty prints the resulting -ModuleDoc object. The `attribs` argument specifies which attributes -of the `APIDoc`s should be displayed. The `introspect` argument gives the +and uses `docintrospecter.introspect_docs` to introspect it, and pretty prints the resulting +`ModuleDoc` object. The ``attribs`` argument specifies which attributes +of the `APIDoc`s should be displayed. The ``introspect`` argument gives the name of a variable in the module whose value should be introspected, instead of introspecting the whole module. @@ -43,7 +43,7 @@ +- x => VariableDoc for epydoc_test.x [5] +- y => VariableDoc for epydoc_test.y [6] -If two variables share the same value, then their `VariableDoc`s will +If two variables share the same value, then their `VariableDoc`\ s will share a `ValueDoc`: >>> runintrospecter(s=""" @@ -143,8 +143,8 @@ Variable Docstrings =================== -The DocIntrospecter is unable extract docstrings for variables. These -docstrings can only be detected if the DocParser is used. +The `docintrospecter` is unable extract docstrings for variables. These +docstrings can only be detected if the `docparser` is used. >>> runintrospecter(s=""" ... x = 12 @@ -188,12 +188,12 @@ +- pyval = <function f at ...> +- vararg = None -The function's arguments are described by the properties `posargs`, -`posarg_defaults`, `kwarg`, and `vararg`. `posargs` is a list of +The function's arguments are described by the properties ``posargs``, +``posarg_defaults``, ``kwarg``, and ``vararg``. ``posargs`` is a list of argument names (or nested tuples of names, for tuple-unpacking args). -`posarg_defaults` is a list of `ValueDoc`s for default values, -corresponding 1:1 with `posargs`. `posarg_defaults` is None for -arguments with no default value. `vararg` and `kwarg` are the names +``posarg_defaults`` is a list of `ValueDoc`\ s for default values, +corresponding 1:1 with ``posargs``. ``posarg_defaults`` is None for +arguments with no default value. ``vararg`` and ``kwarg`` are the names of the variable argument and keyword argument, respectively: >>> runintrospecter(s=""" @@ -388,7 +388,7 @@ +- value +- GenericValueDoc [2] -The right-hand side of a `del` statement may contain a nested +The right-hand side of a ``del`` statement may contain a nested combination of lists, tuples, and parenthases. All variables found anywhere in this nested structure should be deleted: @@ -424,7 +424,7 @@ +- variables +- g => VariableDoc for epydoc_test.g [1] -The right-hand side of a `del` statement may contain a dotted name, in +The right-hand side of a ``del`` statement may contain a dotted name, in which case the named variable should be deleted from its containing namespace. @@ -595,10 +595,10 @@ SF Bug [ 1657050 ] Builtins not resolved in "os" ------------------------------------------------ -If a variable is listed in __all__, then we need to introspect it, +If a variable is listed in ``__all__``, then we need to introspect it, even if we know for certain that it's imported. Before this bug -was fixed, the following test generated a generic 'ValueDoc' value -instead of a 'RoutineDoc' value, because it didn't introspect the +was fixed, the following test generated a generic `ValueDoc` value +instead of a `RoutineDoc` value, because it didn't introspect the value of getcwd. >>> x = runintrospecter(s=""" Modified: trunk/epydoc/src/epydoc/test/docparser.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docparser.doctest 2007-02-19 22:55:22 UTC (rev 1535) +++ trunk/epydoc/src/epydoc/test/docparser.doctest 2007-02-19 22:59:58 UTC (rev 1536) @@ -2,16 +2,16 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ The `epydoc.docparser` module is used to extract API documentation by parsing the source code of Python files. Its primary interface is -`parse_docs()`, which takes a module's filename, and returns a +`docparser.parse_docs()`, which takes a module's filename, and returns a ModuleDoc describing that module and its contents. Test Function ============= This test function takes a string containing the contents of a module, -and writes it to a file, uses `parse_docs` to parse it, and pretty -prints the resulting ModuleDoc object. The `attribs` argument +and writes it to a file, uses `docparser.parse_docs()` to parse it, and pretty +prints the resulting ModuleDoc object. The ``attribs`` argument specifies which attributes of the `APIDoc`s should be displayed. The -`show` argument, if specifies, gives the name of the object in the +``show`` argument, if specifies, gives the name of the object in the module that should be displayed (but the whole module will always be inspected; this just selects what to display). @@ -27,7 +27,7 @@ loops, while loops, and try/except/finally blocks. Tuple assignments are unpacked, when possible. -For simple variable assignments, DocParser creates VariableDoc objects +For simple variable assignments, DocParser creates `VariableDoc` objects containing the name; a valuedoc with the value (as both an abstract syntax tree and a string representation); and information about whether we think the value was imported; is an alias; and is an @@ -424,12 +424,12 @@ +- posargs = [u'x'] +- vararg = None -The function's arguments are described by the properties `posargs`, -`posarg_defaults`, `kwarg`, and `vararg`. `posargs` is a list of +The function's arguments are described by the properties ``posargs``, +``posarg_defaults``, ``kwarg``, and ``vararg``. ``posargs`` is a list of argument names (or nested tuples of names, for tuple-unpacking args). -`posarg_defaults` is a list of `ValueDoc`s for default values, -corresponding 1:1 with `posargs`. `posarg_defaults` is None for -arguments with no default value. `vararg` and `kwarg` are the names +``posarg_defaults`` is a list of `ValueDoc`\ s for default values, +corresponding 1:1 with ``posargs``. ``posarg_defaults`` is None for +arguments with no default value. ``vararg`` and ``kwarg`` are the names of the variable argument and keyword argument, respectively: >>> runparser(s=""" @@ -587,7 +587,7 @@ +- GenericValueDoc [2] +- parse_repr = u'12' -The right-hand side of a `del` statement may contain a nested +The right-hand side of a ``del`` statement may contain a nested combination of lists, tuples, and parenthases. All variables found anywhere in this nested structure should be deleted: @@ -623,7 +623,7 @@ +- variables +- g => VariableDoc for epydoc_test.g [1] -The right-hand side of a `del` statement may contain a dotted name, in +The right-hand side of a ``del`` statement may contain a dotted name, in which case the named variable should be deleted from its containing namespace. Modified: trunk/epydoc/src/epydoc/test/pyval_repr.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/pyval_repr.doctest 2007-02-19 22:55:22 UTC (rev 1535) +++ trunk/epydoc/src/epydoc/test/pyval_repr.doctest 2007-02-19 22:59:58 UTC (rev 1536) @@ -206,7 +206,7 @@ Line Wrapping ============= If a line goes beyond linelen, it is wrapped using ``↵`` (which -gets translated to ``\\`` by `to_plaintext()`). +gets translated to ``\\`` by `ParsedEpytextDocstring.to_plaintext()`). >>> colorizer = PyvalColorizer(linelen=40) >>> print colorizer.colorize('x'*100).to_plaintext(None) @@ -233,8 +233,8 @@ Representation Scores ===================== When colorized representations are built, a score is computed -evaluating how helpful the repr is. E.g., unhelpful values like `<Foo -instance at 0x12345>` get low scores. Currently, the scoring +evaluating how helpful the repr is. E.g., unhelpful values like ``<Foo +instance at 0x12345>`` get low scores. Currently, the scoring algorithm is: - [+1] for each object colorized. When the colorizer recurses into @@ -244,8 +244,8 @@ - [-100] if repr(obj) raises an exception, for any colorized object (including objects in structures). -The `min_score` arg to colorize can be used to set a cutoff-point for -scores; if the score is too low, then `colorize` will return `None`. +The ``min_score`` arg to colorize can be used to set a cutoff-point for +scores; if the score is too low, then `PyvalColorizer.colorize` will return ``None``. >>> def color2(v): ... colorizer = PyvalColorizer(linelen=40) Modified: trunk/epydoc/src/epydoc/test/zope2.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/zope2.doctest 2007-02-19 22:55:22 UTC (rev 1535) +++ trunk/epydoc/src/epydoc/test/zope2.doctest 2007-02-19 22:59:58 UTC (rev 1536) @@ -52,6 +52,6 @@ +- RoutineDoc [18] +- pyval = <CMethod object at ...> -(If we didn't add special support, `ExtensionClass` would be a +(If we didn't add special support, ``ExtensionClass`` would be a `GenericValueDoc`.) Modified: trunk/epydoc/src/epydoc/test/zope3.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/zope3.doctest 2007-02-19 22:55:22 UTC (rev 1535) +++ trunk/epydoc/src/epydoc/test/zope3.doctest 2007-02-19 22:59:58 UTC (rev 1536) @@ -23,5 +23,5 @@ +- canonical_name = DottedName('epydoc_test', 'IExample') +- pyval = <InterfaceClass epydoc_test.IExample> -(If we didn't add special support, `IExample` would be a +(If we didn't add special support, ``IExample`` would be a `GenericValueDoc`.) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dva...@us...> - 2007-02-20 09:52:10
|
Revision: 1543 http://svn.sourceforge.net/epydoc/?rev=1543&view=rev Author: dvarrazzo Date: 2007-02-20 01:52:09 -0800 (Tue, 20 Feb 2007) Log Message: ----------- - Typo fixed Modified Paths: -------------- trunk/epydoc/src/epydoc/test/apidoc.doctest trunk/epydoc/src/epydoc/test/docbuilder.doctest Modified: trunk/epydoc/src/epydoc/test/apidoc.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/apidoc.doctest 2007-02-20 09:50:38 UTC (rev 1542) +++ trunk/epydoc/src/epydoc/test/apidoc.doctest 2007-02-20 09:52:09 UTC (rev 1543) @@ -2,7 +2,7 @@ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This file serves to provide both documentation and regression tests for the epydoc.apidoc module. The main purpose of this module is to -define the :epydoc:`APIDoc` class hierarchy, which is used to encode API +define the `APIDoc` class hierarchy, which is used to encode API documentation about Python programs. The API documentation for a Python program is encoded using a graph of `APIDoc` objects, each of which encodes information about a single Python variable or value. Modified: trunk/epydoc/src/epydoc/test/docbuilder.doctest =================================================================== --- trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-20 09:50:38 UTC (rev 1542) +++ trunk/epydoc/src/epydoc/test/docbuilder.doctest 2007-02-20 09:52:09 UTC (rev 1543) @@ -7,8 +7,8 @@ This test function takes a string containing the contents of a module. It writes the string contents to a file, imports the file as a module, and uses build_doc to build documentation, and pretty prints the resulting -ModuleDoc object. The `attribs` argument specifies which attributes -of the `APIDoc`s should be displayed. The `build` argument gives the +ModuleDoc object. The ``attribs`` argument specifies which attributes +of the `APIDoc` s should be displayed. The `build` argument gives the name of a variable in the module whose documentation should be built, instead of bilding docs for the whole module. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |